diff --git a/build/build_container.sh b/build/build_container.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fc65a05c128655e452f3f2ed8ec625723ac12173
--- /dev/null
+++ b/build/build_container.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+if test -f "summa_actors.sif"; then
+    echo "Conatiner exists"
+else
+    sudo apptainer build summa_actors.sif summa_actors.def
+fi
diff --git a/build/build_summa_actors_container.sh b/build/build_summa_actors_container.sh
new file mode 100755
index 0000000000000000000000000000000000000000..06626809129981407a74a4ef33124f1f64bb4566
--- /dev/null
+++ b/build/build_summa_actors_container.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+cd /Summa-Actors/build
+make -f /Summa-Actors/build/makefile-container all
\ No newline at end of file
diff --git a/build/includes/file_access_actor/file_access_actor.hpp b/build/includes/file_access_actor/file_access_actor.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..66e2a5362d9a4c17ca9b8989201e98fc0013b510
--- /dev/null
+++ b/build/includes/file_access_actor/file_access_actor.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include "output_manager.hpp"
+#include "forcing_file_info.hpp"
+#include "timing_info.hpp"
+
+namespace caf {
+struct file_access_state {
+    // Variables set on Spwan
+    caf::actor parent; 
+    int startGRU;
+    int numGRU;
+
+
+    void *handle_forcing_file_info; // Handle for the forcing file information
+    void *handle_ncid;              // output file ids
+    OutputManager *output_manager;
+    int num_vectors_in_output_manager;
+    int num_steps;
+    int outputStrucSize;
+    int stepsInCurrentFile;
+    int numFiles;
+    int filesLoaded;
+    int err;
+
+    std::vector<Forcing_File_Info> forcing_file_list; // list of steps in file
+    std::vector<bool> outputFileInitHRU;
+
+     // Timing Variables
+    TimingInfo file_access_timing;
+};
+
+behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU, int numGRU, 
+    int outputStrucSize, std::string configPath, actor parent);
+void initalizeFileAccessActor(stateful_actor<file_access_state>* self);
+int writeOutput(stateful_actor<file_access_state>* self, int indxGRU, int indxHRU, int numStepsToWrite, int returnMessage, caf::actor actorRef);
+int readForcing(stateful_actor<file_access_state>* self, int currentFile);
+int write(stateful_actor<file_access_state>* self, int listIndex);
+
+} // end namespace
\ No newline at end of file
diff --git a/build/source/actors/file_access_actor/fileAccess_subroutine_wrappers.h b/build/includes/file_access_actor/file_access_actor_subroutine_wrappers.hpp
similarity index 83%
rename from build/source/actors/file_access_actor/fileAccess_subroutine_wrappers.h
rename to build/includes/file_access_actor/file_access_actor_subroutine_wrappers.hpp
index 795afc439ccd5fa47ff58cd5108a673e07af041e..9df279923786024d24759f1386a59091458f432a 100644
--- a/build/source/actors/file_access_actor/fileAccess_subroutine_wrappers.h
+++ b/build/includes/file_access_actor/file_access_actor_subroutine_wrappers.hpp
@@ -1,9 +1,7 @@
-#ifndef fileAccess_SUBROUTINE_WRAPPERS_H_
-#define fileAccess_SUBROUTINE_WRAPPERS_H_
+#pragma once
 
 extern "C" {
   
-  
   void read_pinit_C(int* err);
 
   void read_vegitationTables(int* err);
@@ -30,10 +28,7 @@ extern "C" {
 
   void FileAccessActor_DeallocateStructures(void* handle_forcFileInfo, void* handle_ncid);
   
-  void Create_Output_File(void* handle_ncid, int* numGRU, int* startGRU, int* err);
+  void def_output(void* handle_ncid, int* startGRU, int* numGRU, int* numHRU, int* err);
 
   void Write_HRU_Param(void* handle_ncid, int* indxGRU, int* indxHRU, int* err);
 }
-
-
-#endif
\ No newline at end of file
diff --git a/build/includes/file_access_actor/forcing_file_info.hpp b/build/includes/file_access_actor/forcing_file_info.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..14945aabb5352fa0dad6ec0b9da49f00d0e2910a
--- /dev/null
+++ b/build/includes/file_access_actor/forcing_file_info.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+class Forcing_File_Info {
+    private:
+        int file_ID;
+        int num_steps;
+        bool is_loaded;
+    
+    public:
+        Forcing_File_Info(int file_ID);
+
+        int getNumSteps();
+
+        bool isFileLoaded();
+
+        void updateIsLoaded();
+
+        void updateNumSteps(int num_steps);
+
+};
\ No newline at end of file
diff --git a/build/includes/file_access_actor/output_manager.hpp b/build/includes/file_access_actor/output_manager.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..20f18c740ffbb55cd76c04fcd42746c2d9a798f9
--- /dev/null
+++ b/build/includes/file_access_actor/output_manager.hpp
@@ -0,0 +1,56 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include <vector>
+#include <algorithm>
+
+
+class ActorRefList {
+    private:
+        int numStepsToWrite; // We can save this value here so that we know how many steps to write
+        int currentSize;
+        unsigned int maxSize;
+        int minIndex = -1; // minimum index of the actor being stored on this list
+        int maxIndex = 0; // maximum index of the actor being stored on this list
+        std::vector<std::tuple<caf::actor, int>> list;
+
+    public:
+        ActorRefList(int maxSize);
+        ~ActorRefList();
+        int getMaxIndex();
+        int getMinIndex();
+        int getCurrentSize();
+        int getMaxSize();
+        int getNumStepsToWrite();
+        bool isFull();
+        void addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite);
+        std::tuple<caf::actor,int> popActor();
+        bool isEmpty();
+        void decrementMaxSize();
+        void removeFailed(caf::actor actorRef);
+};
+
+class OutputManager {
+    private:
+        int numVectors;
+        int avgSizeOfActorList;
+        bool runningFailures;
+        std::vector<ActorRefList*> list;
+        std::vector<int> failedHRU;
+        std::vector<int> failureReRun; // index used so we can add failedHRUs if they fail a second time
+    public:
+        OutputManager(int numVectors, int totalNumActors);
+        ~OutputManager();
+        int addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite);
+        std::tuple<caf::actor,int> popActor(int index);
+        int removeFailed(caf::actor actorRef, int index);
+        int decrementMaxSize(int indexHRU);
+        void restartFailures();
+        int getNumStepsToWrite(int listIndex);
+        bool isFull(int listIndex);
+        bool isEmpty(int listIndex);
+        int getSize(int listIndex);
+        int getMinIndex(int listIndex);
+        int getMaxIndex(int listIndex);
+        void addFailed(int indxHRU);
+};
\ No newline at end of file
diff --git a/build/source/actors/global/fortran_dataTypes.h b/build/includes/global/fortran_data_types.hpp
similarity index 98%
rename from build/source/actors/global/fortran_dataTypes.h
rename to build/includes/global/fortran_data_types.hpp
index 2fceb62bee0f68976907106d6cefa285829c73fa..7552b971c55fe790187cb7445494de767a40529b 100644
--- a/build/source/actors/global/fortran_dataTypes.h
+++ b/build/includes/global/fortran_data_types.hpp
@@ -1,5 +1,4 @@
-#ifndef FORTRAN_DATATYPES_H_
-#define FORTRAN_DATATYPES_H_
+#pragma once
 
 extern "C" {
     // flagVec 
@@ -97,6 +96,4 @@ extern "C" {
     void* new_handle_file_info();
     void delete_handle_file_info(void* handle);
 
-}
-
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/build/includes/global/global.hpp b/build/includes/global/global.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..69b695bae52f83121c48f10cc2974ebc649992f1
--- /dev/null
+++ b/build/includes/global/global.hpp
@@ -0,0 +1,58 @@
+#pragma once
+
+#include <chrono>
+#include <optional>
+#include <iostream>
+#include <vector>
+#include <bits/stdc++.h>
+#include <unistd.h>
+#include "json.hpp"
+
+
+using json = nlohmann::json;
+
+extern bool debug;
+template<typename T>
+int getSettingsTest(std::vector<std::string> keys, T return_value) {
+    for (std::vector<int>::size_type i = 0; i < keys.size(); i++) {
+        std::cout<< keys[i] << std::endl;
+    }
+
+    return 0;
+}
+
+/**
+ * Return the time between to time points
+ */
+double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, 
+    std::chrono::time_point<std::chrono::system_clock> end);
+
+template <typename T>
+std::optional<T> getSettings(std::string settings_file_path, std::string key_1, std::string key_2, 
+    T return_value) {
+    json settings;
+    std::string summa_actors_settings = "/Summa_Actors_Settings.json";
+    std::ifstream settings_file(settings_file_path + summa_actors_settings);
+    settings_file >> settings;
+    settings_file.close();
+    
+    // find first key
+    try {
+        if (settings.find(key_1) != settings.end()) {
+            json key_1_settings = settings[key_1];
+
+            // find value behind second key
+            if (key_1_settings.find(key_2) != key_1_settings.end()) {
+                return key_1_settings[key_2];
+            } else 
+                return {};
+
+        } else {
+            return {}; // return none in the optional (error value)
+        }
+    } catch (json::exception& e) {
+        std::cout << e.what() << "\n";
+        return {};
+    }
+   
+}
\ No newline at end of file
diff --git a/build/source/actors/global/json.hpp b/build/includes/global/json.hpp
similarity index 100%
rename from build/source/actors/global/json.hpp
rename to build/includes/global/json.hpp
diff --git a/build/source/actors/global/messageAtoms.h b/build/includes/global/message_atoms.hpp
similarity index 84%
rename from build/source/actors/global/messageAtoms.h
rename to build/includes/global/message_atoms.hpp
index d8a3c4f2d4c8f58adddcd9c9a02290cc258ff360..11b425b48f07f462246d5e795dd44bd411066765 100644
--- a/build/source/actors/global/messageAtoms.h
+++ b/build/includes/global/message_atoms.hpp
@@ -1,5 +1,6 @@
-#ifndef MESSAGEATOMS_H_
-#define MESSAGEATOMS_H_
+#pragma once
+
+#include "../summa_actor/batch_manager.hpp"
 
 CAF_BEGIN_TYPE_ID_BLOCK(summa, first_custom_type_id)
     // Summa Actor
@@ -38,7 +39,11 @@ CAF_BEGIN_TYPE_ID_BLOCK(summa, first_custom_type_id)
     CAF_ADD_ATOM(summa, start_hru)
     CAF_ADD_ATOM(summa, file_information)
     CAF_ADD_ATOM(summa, dt_init_factor)
+    // Client Actor
+    CAF_ADD_ATOM(summa, connect_to_server)
+    CAF_ADD_ATOM(summa, batch)
+    // Server Actor
+    CAF_ADD_ATOM(summa, done_batch)
+    CAF_ADD_ATOM(summa, time_to_exit)
 
-CAF_END_TYPE_ID_BLOCK(summa)
-
-#endif
\ No newline at end of file
+CAF_END_TYPE_ID_BLOCK(summa)
\ No newline at end of file
diff --git a/build/includes/global/timing_info.hpp b/build/includes/global/timing_info.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e246a6ca2593eacf94254e8306ebc62354b379da
--- /dev/null
+++ b/build/includes/global/timing_info.hpp
@@ -0,0 +1,31 @@
+#pragma once
+#include <chrono>
+#include <optional>
+#include <vector>
+
+using chrono_time = std::chrono::time_point<std::chrono::system_clock>;
+/**
+ * Class to manage timing information. This allows the user to add an arbitrary amount of timing variables.
+ * The timing variables are accessed through their named string and will keep a running duration of the amount 
+ * of time spent through multiple calls to updateStartPoint and updateEndPoint
+ */
+class TimingInfo {
+    private:
+        std::vector<std::optional<chrono_time>> start;
+        std::vector<std::optional<chrono_time>> end;
+        std::vector<double> duration;
+        std::vector<std::string> name_of_time_point; // the name you want for the time point (ie. reading, writing, duration)
+        int num_time_points;
+
+        std::optional<double> calculateDuration(int index);
+        std::optional<int>  getIndex(std::string time_point_name);
+
+    public:
+        TimingInfo();
+        ~TimingInfo();
+        void addTimePoint(std::string time_point_name);
+        void updateStartPoint(std::string time_point_name);
+        void updateEndPoint(std::string time_point_name);
+        std::optional<double> getDuration(std::string time_point_name); // returns duration in seconds
+
+};
\ No newline at end of file
diff --git a/build/source/actors/hru_actor/HRU.h b/build/includes/hru_actor/hru_actor.hpp
similarity index 74%
rename from build/source/actors/hru_actor/HRU.h
rename to build/includes/hru_actor/hru_actor.hpp
index 8dd21f21da1af814887b80aac0a57e3da4fa0529..2f4c8d9b6bd3f01cb23826997be4750ffc2d82cb 100644
--- a/build/source/actors/hru_actor/HRU.h
+++ b/build/includes/hru_actor/hru_actor.hpp
@@ -1,24 +1,15 @@
-#ifndef HRU_H_
-#define HRU_H_
+#pragma once
+
 #include "caf/all.hpp"
-#include "hru_subroutine_wrappers.h"
-#include "../global/fortran_dataTypes.h"
-#include "../global/messageAtoms.h"
-#include "../global/json.hpp"
-#include "../global/global.h"
+#include "fortran_data_types.hpp"
+#include "timing_info.hpp"
 
-#include <fstream>
-#include <string>
-#include <typeinfo>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/resource.h>
 #include <chrono>
-#include <iostream>
+#include <string>
 
 
-using namespace caf;
 
+namespace caf {
 struct hru_state {
 	// Actor References
 	caf::actor file_access_actor;
@@ -91,31 +82,13 @@ struct hru_state {
     int         yearLength;
     int         err = 0;			            // error conotrol
 
-    std::chrono::time_point<std::chrono::system_clock> start;
-    std::chrono::time_point<std::chrono::system_clock> end;
-    double duration = 0.0;
-    std::chrono::time_point<std::chrono::system_clock> initStart;
-    std::chrono::time_point<std::chrono::system_clock> initEnd;
-    double initDuration = 0.0;
-    std::chrono::time_point<std::chrono::system_clock> forcingStart;
-    std::chrono::time_point<std::chrono::system_clock> forcingEnd;
-    double forcingDuration = 0.0;
-    std::chrono::time_point<std::chrono::system_clock> runPhysicsStart;
-    std::chrono::time_point<std::chrono::system_clock> runPhysicsEnd;
-    double runPhysicsDuration = 0.0;
-    std::chrono::time_point<std::chrono::system_clock> writeOutputStart;
-    std::chrono::time_point<std::chrono::system_clock> writeOutputEnd;
-    double writeOutputDuration = 0.0;
+    TimingInfo hru_timing;
 
 };
 
-/**
- * @brief Get the settings from the settings JSON file
- * 
- * @param self Actor State
- * @param configPath Path to the directory that contains the settings file
- */
-void parseSettings(stateful_actor<hru_state>* self, std::string configPath);
+behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
+    std::string configPath,
+    caf::actor file_access_actor, int outputStrucSize, caf::actor parent);
 
 /**
  Function to initalize the HRU for running
@@ -136,4 +109,6 @@ void finalizeTimeVars(stateful_actor<hru_state>* self);
 void deallocateHRUStructures(stateful_actor<hru_state>* self);
 
 void printOutput(stateful_actor<hru_state>* self);
-#endif
\ No newline at end of file
+
+
+}
\ No newline at end of file
diff --git a/build/source/actors/hru_actor/hru_subroutine_wrappers.h b/build/includes/hru_actor/hru_actor_subroutine_wrappers.hpp
similarity index 97%
rename from build/source/actors/hru_actor/hru_subroutine_wrappers.h
rename to build/includes/hru_actor/hru_actor_subroutine_wrappers.hpp
index 638580d57a68f5e2d3dad9d891b2fb6b55c4bb46..577b3f2ebc15385db58f588f47a2b5e89de10fcd 100644
--- a/build/source/actors/hru_actor/hru_subroutine_wrappers.h
+++ b/build/includes/hru_actor/hru_actor_subroutine_wrappers.hpp
@@ -1,10 +1,8 @@
-#ifndef HRU_SUBROUTINE_WRAPPERS_H_
-#define HRU_SUBROUTINE_WRAPPERS_H_
-
+#pragma once
 
 extern "C" {
   // Initialize HRU data_structures
-	void Initialize(
+	void summaActors_initialize(
         int* indxGRU, int* num_steps,
         // Statistics Structures
         void* forcStat, void* progStat, void* diagStat, void* fluxStat, void* indxStat, void* bvarStat,
@@ -97,8 +95,4 @@ extern "C" {
         int* indxGRU, int* indxHRU,
         void* handle_attrStruct, void* handle_typeStruct, void* handle_mparStruct, void* handle_bparStruct,
         int* err);
-}
-
-
-
-# endif
+}
\ No newline at end of file
diff --git a/build/includes/job_actor/GRUinfo.hpp b/build/includes/job_actor/GRUinfo.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..b46b84e5d006ad5a9f453178f7cc1f26b90573ff
--- /dev/null
+++ b/build/includes/job_actor/GRUinfo.hpp
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include <iostream>
+#include <fstream>
+
+class GRUinfo {
+    private:
+        int refGRU; // This will be the same as the refGRU
+        int indxGRU;
+        caf::actor GRU;
+
+        // Variable to update
+        int dt_init;
+
+        // Completed Information
+        int currentAttempt;
+        int maxAttempts;
+        bool completed;
+        bool failed;
+
+        // Timing information for the GRU
+        double runTime;
+        double initDuration;
+        double forcingDuration;
+        double runPhysicsDuration;
+        double writeOutputDuration;
+
+        public:
+            
+            // Constructor
+            GRUinfo(int refGRU, int indxGRU, caf::actor gru, int dt_init, int maxAttempts);
+
+            // Deconstructor
+            ~GRUinfo();
+
+
+            int getRefGRU();
+
+            int getIndxGRU();
+
+            int getDt_init();
+
+            caf::actor getActor();
+
+            void updateGRU(caf::actor gru);
+
+            void updateFailed();
+
+            void updateCompletedToTrue();
+
+            void updateDt_init();
+
+            void updateCurrentAttempt();
+
+            bool isMaxAttemptsReached();
+
+            bool isFailed();
+
+            bool isCompleted();
+
+            void doneRun(double runTime, double initDuration, double forcingDuration,
+                double runPhysicsDuration, double writeOutputDuration);
+
+            void writeSuccess(std::string fileName);
+
+            void writeFail(std::string fileName);
+
+            void printOutput();
+};
\ No newline at end of file
diff --git a/build/source/actors/job_actor/Job.h b/build/includes/job_actor/job_actor.hpp
similarity index 74%
rename from build/source/actors/job_actor/Job.h
rename to build/includes/job_actor/job_actor.hpp
index dd44e5d8d93da7ae479f3e32249bc28c80d14da5..f4f8ef5fe1c1985e5ffe28637e4f00749e5334d3 100644
--- a/build/source/actors/job_actor/Job.h
+++ b/build/includes/job_actor/job_actor.hpp
@@ -1,24 +1,10 @@
-#ifndef SUMMACLIENT_H_
-#define SUMMACLIENT_H_
-
+#pragma once
 #include "caf/all.hpp"
 #include "caf/io/all.hpp"
-#include "../file_access_actor/FileAccessActor.h"
-#include "../hru_actor/HRUActor.h"
-#include "../global/messageAtoms.h"
-#include "../global/json.hpp"
-#include "../global/global.h"
-#include "GRUinfo.h"
-#include "job_subroutine_wrappers.h"
-
-#include "string.h"
-#include <unistd.h>
-#include <vector>
-#include <chrono>
-#include <iostream>
-#include <fstream>
-#include <sys/stat.h>
+#include "GRUinfo.hpp"
+#include "timing_info.hpp"
 
+namespace caf {
 struct job_state {
     // Actor References
     caf::actor file_access_actor; // actor reference for the file_access_actor
@@ -42,9 +28,8 @@ struct job_state {
     int outputStrucSize;
 
     // Timing Variables
-    std::chrono::time_point<std::chrono::system_clock> start;
-    std::chrono::time_point<std::chrono::system_clock> end;
-    double duration;
+    TimingInfo job_timing;
+
     
     // Output File Names for Timings
     bool outputCSV;
@@ -56,7 +41,8 @@ struct job_state {
 
 };
 
-
+behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, 
+    std::string configPath, int outputStrucSize, actor parent);
 
 int parseSettings(stateful_actor<job_state>* self, std::string configPath);
 
@@ -68,4 +54,4 @@ void runGRUs(stateful_actor<job_state>* self);
 
 void restartFailures(stateful_actor<job_state>* self);
 
-#endif
\ No newline at end of file
+} // end namespace
\ No newline at end of file
diff --git a/build/source/actors/job_actor/job_subroutine_wrappers.h b/build/includes/job_actor/job_actor_subroutine_wrappers.hpp
similarity index 71%
rename from build/source/actors/job_actor/job_subroutine_wrappers.h
rename to build/includes/job_actor/job_actor_subroutine_wrappers.hpp
index 8326cb0020c22b63d4f7f6ac0f729d58f49e7572..df66a121eccd367fdb5b4981aa1a1d14b3f0e042 100644
--- a/build/source/actors/job_actor/job_subroutine_wrappers.h
+++ b/build/includes/job_actor/job_actor_subroutine_wrappers.hpp
@@ -1,5 +1,4 @@
-#ifndef JOB_SUBROUTINE_WRAPPERS_H_
-#define JOB_SUBROUTINE_WRAPPERS_H_
+#pragma once
 
 extern "C" {
     void initGlobals(char const*str1, int* totalGRUs, int* totalHRUs, 
@@ -7,6 +6,4 @@ extern "C" {
 
     void cleanUpJobActor(int* err);
     
-}
-
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/build/includes/summa_actor/batch_manager.hpp b/build/includes/summa_actor/batch_manager.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..062cd06b0681653aa722b003cc0c82f30298c20c
--- /dev/null
+++ b/build/includes/summa_actor/batch_manager.hpp
@@ -0,0 +1,57 @@
+#pragma once
+#include "caf/all.hpp"
+#include <vector>
+#include <string>
+
+
+enum batch_status {
+    unassigned,
+    assigned,
+    solved,
+    failed
+};
+
+class Batch {
+    private:
+        int batch_id;
+        int start_hru;
+        int num_hru;
+        double run_time;
+        double read_time;
+        double write_time;
+        std::string assigned_host;
+        caf::actor assigned_actor;
+        batch_status status;
+
+
+    public:
+        Batch(int batch_id, int start_hru, int num_hru);
+
+        void printBatchInfo();
+
+        batch_status getBatchStatus();
+
+        int getBatchID();
+
+        int getStartHRU();
+
+        int getNumHRU();
+
+        void solvedBatch(double run_time, double read_time, double write_time);
+
+        void assignedBatch(std::string hostname, caf::actor actor_ref);
+
+        void updateRunTime(double run_time);
+
+        void writeBatchToFile(std::string file_name);
+};
+
+
+class Batch_Manager {
+    private:
+        std::vector<Batch> batch_list;
+        std::vector<Batch> solved_batches;
+        std::vector<Batch> failed_batches;        
+    public:
+
+};
\ No newline at end of file
diff --git a/build/includes/summa_actor/client.hpp b/build/includes/summa_actor/client.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..29e0a7024862337fb6e0e4632a58a3012b7245f2
--- /dev/null
+++ b/build/includes/summa_actor/client.hpp
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include "batch_manager.hpp"
+
+
+class Client {
+    private:
+        int id;
+        int batches_solved;
+        bool connected;
+        caf::actor client_actor;
+        std::string hostname;
+        Batch* current_batch;
+
+
+    public:
+        Client(int id, caf::actor client_actor, std::string hostname);
+
+        caf::actor getActor();
+
+        int getID();
+
+        std::string getHostname();
+
+};
\ No newline at end of file
diff --git a/build/includes/summa_actor/summa_actor.hpp b/build/includes/summa_actor/summa_actor.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..c87c6a52e41ad70717c6efb0676c19f8472e6f57
--- /dev/null
+++ b/build/includes/summa_actor/summa_actor.hpp
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+#include "timing_info.hpp"
+
+#include <chrono>
+#include <string>
+#include <vector>
+
+namespace caf {
+
+
+struct job_timing_info {
+    std::vector<double> job_duration;
+    std::vector<double> job_read_duration;
+    std::vector<double> job_write_duration;
+};
+
+struct summa_actor_state {
+    // Timing Information For Summa-Actor
+    TimingInfo summa_actor_timing;
+    struct job_timing_info timing_info_for_jobs;
+
+    // Program Parameters
+    int startGRU;           // starting GRU for the simulation
+    int numGRU;             // number of GRUs to compute
+    std::string configPath;// path to the fileManager.txt file
+    // Information about the jobs
+    int numFailed = 0;      // Number of jobs that have failed
+
+    // Values Set By Summa_Actors_Settings.json
+    int maxGRUPerJob; // maximum number of GRUs a job can compute at once
+    int outputStrucSize; 
+
+    caf::actor currentJob;  // Reference to the current job actor
+    caf::actor parent;
+
+};
+
+behavior summa_actor(stateful_actor<summa_actor_state>* self, int startGRU, int numGRU, std::string configPath, actor parent);
+
+void spawnJob(stateful_actor<summa_actor_state>* self);
+
+
+
+
+} // namespace caf
\ No newline at end of file
diff --git a/build/includes/summa_actor/summa_client.hpp b/build/includes/summa_actor/summa_client.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..6b8132db829c7b598f410b34a466b90afaa54387
--- /dev/null
+++ b/build/includes/summa_actor/summa_client.hpp
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+
+#include <string>
+#include <optional>
+
+namespace caf {
+
+struct summa_client_state {
+    strong_actor_ptr current_server;
+    std::string hostname;
+    std::optional<std::string> config_path;
+    actor summa_actor_ref;
+    int batch_id;
+    int client_id; // id held by server
+};
+behavior summa_client(stateful_actor<summa_client_state>* self, std::optional<std::string> config_path);
+behavior unconnected(stateful_actor<summa_client_state>*);
+void connecting(stateful_actor<summa_client_state>*, const std::string& host, uint16_t port);
+behavior running(stateful_actor<summa_client_state>*, const actor& summa_server);
+
+}
\ No newline at end of file
diff --git a/build/includes/summa_actor/summa_server.hpp b/build/includes/summa_actor/summa_server.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2a082b36038d4a972c88bafaefbb3c60f2592cc1
--- /dev/null
+++ b/build/includes/summa_actor/summa_server.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+#include "batch_manager.hpp"
+#include "client.hpp"
+#include <string>
+#include <optional>
+
+
+namespace caf {
+
+struct summa_server_state {
+    int total_hru_count;
+    int num_clients;
+    int num_hru_per_batch;
+    int batches_remaining = 0;
+    int batches_solved = 0;
+    std::string config_path;
+    std::vector<Batch> batch_list;
+    std::vector<Batch> solved_batches;
+    std::vector<Batch> failed_batches;
+    std::vector<Client> client_list;
+    std::string csv_output_name;
+};
+
+behavior summa_server(stateful_actor<summa_server_state>* self, std::string config_path);
+int assembleBatches(stateful_actor<summa_server_state>* self);
+std::optional<int> getUnsolvedBatchID(stateful_actor<summa_server_state>* self);
+}
\ No newline at end of file
diff --git a/build/launch_summa_actors_build_process.sh b/build/launch_summa_actors_build_process.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6a537f51d4c3ed1a1e926b3bcdc338abf66f07ff
--- /dev/null
+++ b/build/launch_summa_actors_build_process.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+#############
+## File in the path that SUMMA-Actors top level directory is located in
+###############
+
+SUMMA_ACTORS=/home/kklenk/Summa-Projects/Summa-Actors # top level directory
+
+apptainer exec --bind $SUMMA_ACTORS:/Summa-Actors summa_actors.sif /Summa-Actors/build/build_summa_actors_container.sh
\ No newline at end of file
diff --git a/build/makefile b/build/makefile
index 9368cc4df61b49792bade25d648f9a09a39feb13..d42c2ece7046c500fbf43bfb8507aa912240e0bb 100644
--- a/build/makefile
+++ b/build/makefile
@@ -1,31 +1,30 @@
 #### parent directory of the 'build' directory ####
-# F_MASTER =
+ROOT_DIR = /Summa-Actors
 
-#### fortran compiler ####
-# FC = 
-
-#### C++ compiler ####
-# CC =
+#### Compilers ####
+FC = gfortran # Fortran
+CC = g++	  # C++
 
 #### Includes AND Libraries ####
-# INCLUDES =
-# LIBRARIES =
+INCLUDES = -I/usr/include -I/usr/local/include
+LIBRARIES = -L/usr/lib -L/usr/local/lib -lnetcdff -lopenblas
 
-# ACTORS_INCLUDES =
-# ACTORS_LIBRARIES =
+ACTORS_INCLUDES = -I/usr/include -I/usr/local/include
+ACTORS_LIBRARIES = -L/usr/lib -L/usr/local/lib -L/Summa-Actors/bin -lcaf_core -lcaf_io -lsumma -lopenblas -lnetcdff
 
 
 # Production runs
-FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC
-FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC
-FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC
-FLAGS_ACTORS = -O3
+FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_ACTORS = -O3 -Wfatal-errors -std=c++17
+
+# Debug runs
+# FLAGS_NOAH = -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC
+# FLAGS_COMM = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
+# FLAGS_SUMMA = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
+# FLAGS_ACTORS = -g -O0 -Wall -std=c++17
 
-# # Debug runs
-# FLAGS_NOAH = -pg -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC
-# FLAGS_COMM = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
-# FLAGS_SUMMA = -pg -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
-# FLAGS_ACTORS = -pg -g -O0 -Wall
 
 
 #========================================================================
@@ -33,18 +32,17 @@ FLAGS_ACTORS = -O3
 #========================================================================
 
 # Core directory that contains source code
-F_KORE_DIR = $(F_MASTER)/build/source
+F_KORE_DIR = $(ROOT_DIR)/build/source
 
 # Location of the compiled modules
-MOD_PATH = $(F_MASTER)/build
+MOD_PATH = $(ROOT_DIR)/build
 
 # Define the directory for the executables
-EXE_PATH = $(F_MASTER)/bin
-
-#========================================================================
-# PART 2: Assemble all of the SUMMA sub-routines
-#========================================================================
+EXE_PATH = $(ROOT_DIR)/bin
 
+####################################################################################################
+###################################### Assemble Fortran Files ######################################
+####################################################################################################
 # Define directories
 DRIVER_DIR = $(F_KORE_DIR)/driver
 HOOKUP_DIR = $(F_KORE_DIR)/hookup
@@ -235,25 +233,65 @@ SUMMA_DRIVER= \
 		
 DRIVER = $(patsubst %, $(DRIVER_DIR)/%, $(SUMMA_DRIVER))
 
-ACTORC = $(F_KORE_DIR)/actors/main.cc
+####################################################################################################
+###################################### Assemble Fortran Files ######################################
+####################################################################################################
+
+####################################################################################################
+######################################## Assemble C++ Files ########################################
+####################################################################################################
+
+INCLUDE_DIR = /Summa-Actors/build/includes
+SOURCE_DIR = /Summa-Actors/build/source/actors
+
+
+GLOBAL_INCLUDES = -I$(INCLUDE_DIR)/global
+GLOBAL = $(SOURCE_DIR)/global/global.cpp
+TIMEINFO = $(SOURCE_DIR)/global/timing_info.cpp
+
+SUMMA_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/summa_actor
+SUMMA_ACTOR = $(SOURCE_DIR)/summa_actor/summa_actor.cpp
+SUMMA_CLIENT = $(SOURCE_DIR)/summa_actor/summa_client.cpp
+SUMMA_SERVER = $(SOURCE_DIR)/summa_actor/summa_server.cpp
+
+BATCH_MANGER = $(SOURCE_DIR)/summa_actor/batch_manager.cpp
+CLIENT_MANAGER = $(SOURCE_DIR)/summa_actor/client.cpp
+
+JOB_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/job_actor
+JOB_ACTOR = $(SOURCE_DIR)/job_actor/job_actor.cpp
+GRUinfo = $(SOURCE_DIR)/job_actor/GRUinfo.cpp
+
+FILE_ACCESS_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/file_access_actor
+FILE_ACCESS_ACTOR = $(SOURCE_DIR)/file_access_actor/file_access_actor.cpp
+FORCING_FILE_INFO = $(SOURCE_DIR)/file_access_actor/forcing_file_info.cpp
+OUTPUT_MANAGER = $(SOURCE_DIR)/file_access_actor/output_manager.cpp
+
+HRU_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/hru_actor
+HRU_ACTOR = $(SOURCE_DIR)/hru_actor/hru_actor.cpp
+
+MAIN = $(F_KORE_DIR)/actors/main.cpp
 
 ACTOR_TEST = $(F_KORE_DIR)/testing/testing_main.cc
+####################################################################################################
+######################################## Assemble C++ Files ########################################
+####################################################################################################
 
 
 #========================================================================
 # PART 3: compilation
 #======================================================================
+all: fortran cpp
 
-# Compile
-all: lib main
+fortran: compile_noah compile_comm compile_summa link clean_fortran
 
-lib: compile_noah compile_comm compile_summa link clean
-
-main: actors actorsLink actorsClean
+cpp: compile_globals compile_hru_actor compile_file_access_actor compile_job_actor compile_summa_actor \
+	compile_summa_client compile_summa_server compile_main link_cpp clean_cpp
 
 test: actors_test actors_testLink actorsClean
-
-# compile Noah-MP routines
+	
+###################################################################################################################
+############################################## COMPILE SUMMA-Fortran ##############################################
+###################################################################################################################
 compile_noah:
 	$(FC) $(FLAGS_NOAH) -c $(NRUTIL) $(NOAHMP)
 
@@ -268,30 +306,66 @@ compile_summa:
 # generate library
 link:   
 	$(FC) -shared *.o -o libsumma.so  
-	mv libsumma.so $(F_MASTER)/bin
+	mv libsumma.so $(ROOT_DIR)/bin
 
-# compile the c++ portion of SummaActors
-actors:
-	$(CC) $(FLAGS_ACTORS) -c $(ACTORC) -std=c++17 $(ACTORS_INCLUDES)
+# Remove object files
+clean_fortran:
+	rm -f *.o *.mod soil_veg_gen_parm__genmod.f90
+###################################################################################################################
+############################################## COMPILE SUMMA-Fortran ##############################################
+###################################################################################################################
+
+
+###################################################################################################################
+################################################ COMPILE SUMMA-C++ ################################################
+###################################################################################################################
+compile_globals:
+	$(CC) $(FLAGS_ACTORS) -c $(GLOBAL) $(TIMEINFO) $(GLOBAL_INCLUDES)
+
+compile_hru_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(HRU_ACTOR) $(HRU_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES)
+
+compile_file_access_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(FILE_ACCESS_ACTOR) $(FORCING_FILE_INFO) $(OUTPUT_MANAGER) \
+	$(FILE_ACCESS_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES)
+
+compile_job_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(JOB_ACTOR) $(GRUinfo) $(JOB_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES) \
+	$(FILE_ACCESS_ACTOR_INCLUDES) $(HRU_ACTOR_INCLUDES)
+
+compile_summa_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_ACTOR) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES) \
+	$(JOB_ACTOR_INCLUDES)
+
+compile_summa_client:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_CLIENT) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES)
+
+compile_summa_server:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_SERVER) $(BATCH_MANGER) $(CLIENT_MANAGER) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES)
 
-actorsLink:
-	$(CC) -o summaMain *.o $(ACTORS_LIBRARIES)
-	mv summaMain $(F_MASTER)/bin
+compile_main:
+	$(CC) $(FLAGS_ACTORS) -c $(MAIN) $(GLOBAL_INCLUDES) $(SUMMA_ACTOR_INCLUDES) $(JOB_ACTOR_INCLUDES)
 
-#### COMPILE TESTING FILES ####
+link_cpp:
+	$(CC) $(FLAGS_ACTORS) -o summaMain *.o $(ACTORS_LIBRARIES)
+	mv summaMain $(ROOT_DIR)/bin
+
+clean_cpp:
+	rm *.o
+###################################################################################################################
+################################################ COMPILE SUMMA-C++ ################################################
+###################################################################################################################
+
+
+###################################################################################################################
+################################################## COMPILE TESTS ##################################################
+###################################################################################################################
 actors_test:
 	$(CC) $(FLAGS_ACTORS) -c $(ACTOR_TEST) -std=c++17 $(ACTORS_INCLUDES)
 
 actors_testLink:
 	$(CC) -o summaTest *.o $(ACTORS_LIBRARIES)
 
-actorsClean:
-	rm *.o
-# Remove object files
-clean:
-	rm -f *.o *.mod soil_veg_gen_parm__genmod.f90
-
-	
 clean_lib:
 	rm *.so
 
diff --git a/build/makefile-container b/build/makefile-container
new file mode 100644
index 0000000000000000000000000000000000000000..0f30d90d4168361c46b82ecd461ee7e4d844515c
--- /dev/null
+++ b/build/makefile-container
@@ -0,0 +1,370 @@
+#### parent directory of the 'build' directory ####
+ROOT_DIR = /Summa-Actors
+
+#### Compilers ####
+FC = gfortran # Fortran
+CC = g++	  # C++
+
+#### Includes AND Libraries ####
+INCLUDES = -I/usr/include -I/usr/local/include
+LIBRARIES = -L/usr/local/lib -lnetcdff -lopenblas
+
+ACTORS_INCLUDES = -I/usr/local/include -I/usr/local/include
+ACTORS_LIBRARIES = -L/usr/local/lib -L$(ROOT_DIR)/bin -lcaf_core -lcaf_io -lsumma -lopenblas -lnetcdff
+
+
+# Production runs
+FLAGS_NOAH = -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_COMM = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_SUMMA = -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors
+FLAGS_ACTORS = -O3 -Wfatal-errors -std=c++17
+
+# # Debug runs
+# FLAGS_NOAH = -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fbacktrace -Wno-unused -Wno-unused-dummy-argument -fPIC
+# FLAGS_COMM = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
+# FLAGS_SUMMA = -g -O0 -Wall -ffree-line-length-none -fmax-errors=0 -fbacktrace -fcheck=bounds -fPIC
+# FLAGS_ACTORS = -g -O0 -Wall -std=c++17
+
+
+
+#========================================================================
+# PART 1: Define directory paths
+#========================================================================
+
+# Core directory that contains source code
+F_KORE_DIR = $(ROOT_DIR)/build/source
+
+# Location of the compiled modules
+MOD_PATH = $(ROOT_DIR)/build
+
+# Define the directory for the executables
+EXE_PATH = $(ROOT_DIR)/bin
+
+####################################################################################################
+###################################### Assemble Fortran Files ######################################
+####################################################################################################
+# Define directories
+DRIVER_DIR = $(F_KORE_DIR)/driver
+HOOKUP_DIR = $(F_KORE_DIR)/hookup
+NETCDF_DIR = $(F_KORE_DIR)/netcdf
+DSHARE_DIR = $(F_KORE_DIR)/dshare
+NUMREC_DIR = $(F_KORE_DIR)/numrec
+NOAHMP_DIR = $(F_KORE_DIR)/noah-mp
+ENGINE_DIR = $(F_KORE_DIR)/engine
+ACTORS_DIR = $(F_KORE_DIR)/actors
+JOB_ACTOR_DIR = $(ACTORS_DIR)/job_actor
+FILE_ACCESS_DIR = $(ACTORS_DIR)/file_access_actor
+HRU_ACTOR_DIR = $(ACTORS_DIR)/hru_actor
+
+#  utilities
+SUMMA_NRUTIL= \
+		nrtype.f90 \
+		f2008funcs.f90 \
+		nr_utility.f90
+NRUTIL = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_NRUTIL))
+
+# Numerical recipes procedures
+# NOTE: all numerical recipes procedures are now replaced with free versions
+SUMMA_NRPROC= \
+		expIntegral.f90 \
+		spline_int.f90
+NRPROC = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_NRPROC))
+
+# Hook-up modules (set files and directory paths)
+SUMMA_HOOKUP= \
+		ascii_util.f90 \
+		summaActors_FileManager.f90
+HOOKUP = $(patsubst %, $(HOOKUP_DIR)/%, $(SUMMA_HOOKUP))
+
+# Data modules
+SUMMA_DATAMS= \
+		multiconst.f90 \
+		var_lookup.f90 \
+		data_types.f90 \
+		globalData.f90 \
+		flxMapping.f90 \
+		get_ixname.f90 \
+		popMetadat.f90 \
+		outpt_stat.f90
+DATAMS = $(patsubst %, $(DSHARE_DIR)/%, $(SUMMA_DATAMS))
+
+# utility modules
+SUMMA_UTILMS= \
+		time_utils.f90 \
+		mDecisions.f90 \
+		snow_utils.f90 \
+		soil_utils.f90 \
+		updatState.f90 \
+		matrixOper.f90
+UTILMS = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_UTILMS))
+
+# Model guts
+SUMMA_MODGUT= \
+		MODGUT = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_MODGUT))
+
+# Solver
+SUMMA_SOLVER= \
+		vegPhenlgy.f90 \
+		diagn_evar.f90 \
+		stomResist.f90 \
+		groundwatr.f90 \
+		vegSWavRad.f90 \
+		vegNrgFlux.f90 \
+		ssdNrgFlux.f90 \
+		vegLiqFlux.f90 \
+		snowLiqFlx.f90 \
+		soilLiqFlx.f90 \
+		bigAquifer.f90 \
+		computFlux.f90 \
+		computResid.f90 \
+		computJacob.f90 \
+		eval8summa.f90 \
+		summaSolve.f90 \
+		systemSolv.f90 \
+		varSubstep.f90 \
+		opSplittin.f90 \
+		coupled_em.f90
+		
+SOLVER = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_SOLVER))
+
+# Interface code for Fortran-C++
+SUMMA_INTERFACE= \
+		cppwrap_datatypes.f90 \
+		cppwrap_auxiliary.f90 \
+		cppwrap_metadata.f90 \
+
+INTERFACE = $(patsubst %, $(ACTORS_DIR)/global/%, $(SUMMA_INTERFACE))
+
+SUMMA_FILEACCESS_INTERFACE = \
+		initOutputStruc.f90 \
+		deallocateOutputStruc.f90 \
+		cppwrap_fileAccess.f90
+
+FILEACCESS_INTERFACE = $(patsubst %, $(FILE_ACCESS_DIR)/%, $(SUMMA_FILEACCESS_INTERFACE))
+
+SUMMA_JOB_INTERFACE = \
+		cppwrap_job.f90
+
+JOB_INTERFACE =  $(patsubst %, $(JOB_ACTOR_DIR)/%, $(SUMMA_JOB_INTERFACE))
+
+SUMMA_HRU_INTERFACE = \
+		cppwrap_hru.f90
+
+HRU_INTERFACE = $(patsubst %, $(HRU_ACTOR_DIR)/%, $(SUMMA_HRU_INTERFACE))
+		
+
+# Define routines for SUMMA preliminaries
+SUMMA_PRELIM= \
+		conv_funcs.f90 \
+		sunGeomtry.f90 \
+		convE2Temp.f90 \
+		allocspaceActors.f90 \
+		alloc_file_access.f90\
+		checkStruc.f90 \
+		childStruc.f90 \
+		ffile_info.f90 \
+		read_attribute.f90 \
+		read_pinit.f90 \
+		pOverwrite.f90 \
+		read_paramActors.f90 \
+		paramCheck.f90 \
+		check_icondActors.f90 \
+		# allocspace.f90
+PRELIM = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_PRELIM))
+
+SUMMA_NOAHMP= \
+		module_model_constants.F \
+		module_sf_noahutl.F \
+		module_sf_noahlsm.F \
+		module_sf_noahmplsm.F
+
+NOAHMP = $(patsubst %, $(NOAHMP_DIR)/%, $(SUMMA_NOAHMP))
+
+# Define routines for the SUMMA model runs
+SUMMA_MODRUN = \
+		indexState.f90 \
+		getVectorz.f90 \
+		updateVars.f90 \
+		var_derive.f90 \
+		read_forcingActors.f90 \
+		access_forcing.f90\
+		access_write.f90 \
+		derivforce.f90 \
+		snowAlbedo.f90 \
+		canopySnow.f90 \
+		tempAdjust.f90 \
+		snwCompact.f90 \
+		layerMerge.f90 \
+		layerDivide.f90 \
+		volicePack.f90 \
+		qTimeDelay.f90
+MODRUN = $(patsubst %, $(ENGINE_DIR)/%, $(SUMMA_MODRUN))
+
+# Define NetCDF routines
+# OutputStrucWrite is not a netcdf subroutine and should be
+# moved
+SUMMA_NETCDF = \
+		netcdf_util.f90 \
+		def_output.f90 \
+		outputStrucWrite.f90 \
+		writeOutput.f90	\
+		read_icondActors.f90
+NETCDF = $(patsubst %, $(NETCDF_DIR)/%, $(SUMMA_NETCDF))
+
+# ... stitch together common programs
+COMM_ALL = $(NRUTIL) $(NRPROC) $(HOOKUP) $(DATAMS) $(UTILMS)
+
+# ... stitch together SUMMA programs
+SUMMA_ALL = $(NETCDF) $(PRELIM) $(MODRUN) $(SOLVER) 
+
+# Define the driver routine
+SUMMA_DRIVER= \
+		summaActors_type.f90 \
+		summaActors_util.f90 \
+		summaActors_globalData.f90 \
+		summaActors_init.f90 \
+		SummaActors_setup.f90 \
+		summaActors_restart.f90 \
+		summaActors_forcing.f90 \
+		SummaActors_modelRun.f90 \
+		summaActors_alarms.f90 \
+		summaActors_wOutputStruc.f90
+		
+		
+DRIVER = $(patsubst %, $(DRIVER_DIR)/%, $(SUMMA_DRIVER))
+
+####################################################################################################
+###################################### Assemble Fortran Files ######################################
+####################################################################################################
+
+####################################################################################################
+######################################## Assemble C++ Files ########################################
+####################################################################################################
+
+INCLUDE_DIR = $(ROOT_DIR)/build/includes
+SOURCE_DIR = $(ROOT_DIR)/build/source/actors
+
+
+GLOBAL_INCLUDES = -I$(INCLUDE_DIR)/global
+GLOBAL = $(SOURCE_DIR)/global/global.cpp
+TIMEINFO = $(SOURCE_DIR)/global/timing_info.cpp
+
+SUMMA_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/summa_actor
+SUMMA_ACTOR = $(SOURCE_DIR)/summa_actor/summa_actor.cpp
+SUMMA_CLIENT = $(SOURCE_DIR)/summa_actor/summa_client.cpp
+SUMMA_SERVER = $(SOURCE_DIR)/summa_actor/summa_server.cpp
+
+BATCH_MANGER = $(SOURCE_DIR)/summa_actor/batch_manager.cpp
+CLIENT_MANAGER = $(SOURCE_DIR)/summa_actor/client.cpp
+
+JOB_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/job_actor
+JOB_ACTOR = $(SOURCE_DIR)/job_actor/job_actor.cpp
+GRUinfo = $(SOURCE_DIR)/job_actor/GRUinfo.cpp
+
+FILE_ACCESS_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/file_access_actor
+FILE_ACCESS_ACTOR = $(SOURCE_DIR)/file_access_actor/file_access_actor.cpp
+FORCING_FILE_INFO = $(SOURCE_DIR)/file_access_actor/forcing_file_info.cpp
+OUTPUT_MANAGER = $(SOURCE_DIR)/file_access_actor/output_manager.cpp
+
+HRU_ACTOR_INCLUDES = -I$(INCLUDE_DIR)/hru_actor
+HRU_ACTOR = $(SOURCE_DIR)/hru_actor/hru_actor.cpp
+
+MAIN = $(F_KORE_DIR)/actors/main.cpp
+
+ACTOR_TEST = $(F_KORE_DIR)/testing/testing_main.cc
+####################################################################################################
+######################################## Assemble C++ Files ########################################
+####################################################################################################
+
+
+#========================================================================
+# PART 3: compilation
+#======================================================================
+all: fortran cpp
+
+fortran: compile_noah compile_comm compile_summa link clean_fortran
+
+cpp: compile_globals compile_hru_actor compile_file_access_actor compile_job_actor compile_summa_actor \
+	compile_summa_client compile_summa_server compile_main link_cpp clean_cpp
+
+test: actors_test actors_testLink actorsClean
+	
+###################################################################################################################
+############################################## COMPILE SUMMA-Fortran ##############################################
+###################################################################################################################
+compile_noah:
+	$(FC) $(FLAGS_NOAH) -c $(NRUTIL) $(NOAHMP)
+
+# compile common routines
+compile_comm:
+	$(FC) $(FLAGS_COMM) -c $(COMM_ALL) $(INTERFACE) $(INCLUDES)
+
+# compile SUMMA routines
+compile_summa: 
+	$(FC) $(FLAGS_SUMMA) -c $(SUMMA_ALL) $(DRIVER) $(JOB_INTERFACE) $(FILEACCESS_INTERFACE) $(HRU_INTERFACE) $(INCLUDES)
+
+# generate library
+link:   
+	$(FC) -shared *.o -o libsumma.so  
+	mv libsumma.so $(ROOT_DIR)/bin
+
+# Remove object files
+clean_fortran:
+	rm -f *.o *.mod soil_veg_gen_parm__genmod.f90
+###################################################################################################################
+############################################## COMPILE SUMMA-Fortran ##############################################
+###################################################################################################################
+
+
+###################################################################################################################
+################################################ COMPILE SUMMA-C++ ################################################
+###################################################################################################################
+compile_globals:
+	$(CC) $(FLAGS_ACTORS) -c $(GLOBAL) $(TIMEINFO) $(GLOBAL_INCLUDES)
+
+compile_hru_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(HRU_ACTOR) $(HRU_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES)
+
+compile_file_access_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(FILE_ACCESS_ACTOR) $(FORCING_FILE_INFO) $(OUTPUT_MANAGER) \
+	$(FILE_ACCESS_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES)
+
+compile_job_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(JOB_ACTOR) $(GRUinfo) $(JOB_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES) \
+	$(FILE_ACCESS_ACTOR_INCLUDES) $(HRU_ACTOR_INCLUDES)
+
+compile_summa_actor:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_ACTOR) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES) $(ACTORS_INCLUDES) \
+	$(JOB_ACTOR_INCLUDES)
+
+compile_summa_client:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_CLIENT) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES)
+
+compile_summa_server:
+	$(CC) $(FLAGS_ACTORS) -c $(SUMMA_SERVER) $(BATCH_MANGER) $(CLIENT_MANAGER) $(SUMMA_ACTOR_INCLUDES) $(GLOBAL_INCLUDES)
+
+compile_main:
+	$(CC) $(FLAGS_ACTORS) -c $(MAIN) $(GLOBAL_INCLUDES) $(SUMMA_ACTOR_INCLUDES) $(JOB_ACTOR_INCLUDES)
+
+link_cpp:
+	$(CC) $(FLAGS_ACTORS) -o summaMain *.o $(ACTORS_LIBRARIES)
+	mv summaMain $(ROOT_DIR)/bin
+
+clean_cpp:
+	rm *.o
+###################################################################################################################
+################################################ COMPILE SUMMA-C++ ################################################
+###################################################################################################################
+
+
+###################################################################################################################
+################################################## COMPILE TESTS ##################################################
+###################################################################################################################
+actors_test:
+	$(CC) $(FLAGS_ACTORS) -c $(ACTOR_TEST) -std=c++17 $(ACTORS_INCLUDES)
+
+actors_testLink:
+	$(CC) -o summaTest *.o $(ACTORS_LIBRARIES)
+
+clean_lib:
+	rm *.so
diff --git a/build/module_load.sh b/build/module_load.sh
new file mode 100755
index 0000000000000000000000000000000000000000..041d0e199a153b24fe8e9ba6836160dcd49ec32e
--- /dev/null
+++ b/build/module_load.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+#### load modules if using Compute Canada or Copernicus ####
+module load gcc/9.3.0
+module load netcdf-fortran
+module load openblas
+module load caf
+
+export LD_LIBRARY_PATH=/globalhome/kck540/HPC/SummaProjects/Summa-Actors/bin
\ No newline at end of file
diff --git a/build/run_script.sh b/build/run_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..06e4b8284a4c456803cc40dcd783abd1ee3028d2
--- /dev/null
+++ b/build/run_script.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+cd /Summa-Actors/build
+# make -f /Summa-Actors/build/makefile-container all
+export LD_LIBRARY_PATH=/Summa-Actors/bin
+cd /Summa-Actors/bin
+./summaMain -c /gladwell/kck540/Summa-Distributed/herschel/
\ No newline at end of file
diff --git a/build/source/actors/file_access_actor/FileAccess.h b/build/source/actors/file_access_actor/FileAccess.h
deleted file mode 100644
index 9dee306931bb8df4584c737d03ff09b256b4d4d4..0000000000000000000000000000000000000000
--- a/build/source/actors/file_access_actor/FileAccess.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef FILEACCESS_H_
-#define FILEACCESS_H_
-#include "caf/all.hpp"
-
-#include "../global/fortran_dataTypes.h"
-#include "../global/messageAtoms.h"
-#include "../global/global.h"
-#include "../global/json.hpp"
-#include "fileAccess_subroutine_wrappers.h"
-#include "OutputManager.h"
-#include <vector>
-#include <chrono>
-
-
-
-class forcingFile {
-    private:
-        int fileID; // which file are we relative the forcing file list saved in fortran
-        int numSteps; // the number of steps in this forcing file
-        bool isLoaded; // is this file actually loaded in to RAM yet.
-    public:
-        forcingFile(int fileID) {
-            this->fileID = fileID;
-            this->numSteps = 0;
-            this->isLoaded = false;
-        }
-
-        int getNumSteps() {
-            return this->numSteps;
-        }
-
-        bool isFileLoaded() {
-            return this->isLoaded;
-        }
-
-        void updateIsLoaded() {
-            this->isLoaded = true;
-        }
-
-        void updateNumSteps(int numSteps) {
-            this->numSteps = numSteps;
-            this->isLoaded = true;
-        }
-};
-
-struct file_access_state {
-    // Variables set on Spwan
-    caf::actor parent; 
-    int startGRU;
-    int numGRU;
-
-
-    void *handle_forcFileInfo = new_handle_file_info(); // Handle for the forcing file information
-    void *handle_ncid = new_handle_var_i();               // output file ids
-    OutputManager *output_manager;
-    int num_vectors_in_output_manager;
-    int num_steps;
-    int outputStrucSize;
-    int stepsInCurrentFile;
-    int numFiles;
-    int filesLoaded;
-    int err = 0;
-
-    std::vector<forcingFile> forcFileList; // list of steps in file
-    std::vector<bool> outputFileInitHRU;
-
-    std::chrono::time_point<std::chrono::system_clock> readStart;
-    std::chrono::time_point<std::chrono::system_clock> readEnd;
-    double readDuration = 0.0;
-
-    std::chrono::time_point<std::chrono::system_clock> writeStart;
-    std::chrono::time_point<std::chrono::system_clock> writeEnd;
-    double writeDuration = 0.0;
-
-
-};
-
-
-
-
-
-
-
-
-#endif
\ No newline at end of file
diff --git a/build/source/actors/file_access_actor/OutputManager.h b/build/source/actors/file_access_actor/OutputManager.h
deleted file mode 100644
index 5faa5f1f7ffd4ec8dbf14d61386105a72d80b5f9..0000000000000000000000000000000000000000
--- a/build/source/actors/file_access_actor/OutputManager.h
+++ /dev/null
@@ -1,306 +0,0 @@
-#ifndef OutputManager_H_
-#define OutputManager_H_
-
-#include "caf/all.hpp"
-#include <vector>
-#include <algorithm>
-/**
- * @brief Basic Container class to hold actor references. This has a size component for checking when it is full.
- * 
- */
-class ActorRefList {
-    private:
-        int numStepsToWrite; // We can save this value here so that we know how many steps to write
-        int currentSize;
-        unsigned int maxSize;
-        int minIndex = -1; // minimum index of the actor being stored on this list
-        int maxIndex = 0; // maximum index of the actor being stored on this list
-        std::vector<std::tuple<caf::actor, int>> list;
-    
-    public:
-        // Constructor
-        ActorRefList(int maxSize){
-            this->currentSize = 0;
-            this->maxSize = maxSize;
-        }
-
-        // Deconstructor
-        ~ActorRefList(){};
-
-        int getMaxIndex() {
-            return this->maxIndex;
-        }
-
-        int getMinIndex() {
-            return this->minIndex;
-        }
-        
-        int getCurrentSize() {
-            return this->currentSize;
-        }
-
-        int getMaxSize() {
-            return this->maxSize;
-        }
-
-        int getNumStepsToWrite() {
-            return this->numStepsToWrite;
-        }
-        
-        bool isFull() {
-            return list.size() == this->maxSize;
-        }
-
-        /**
-        * Adds An Actor and its return message as a tuple to this->list
-        * actor - the actor ref of the actor being added to this->list
-        * returnMessage - Either 9999 (place holder and specifies to send a done_write_v message) or
-        * this is the current forcingFileList index that allows the file_access actor to know the number 
-        * of steps the HRU actor that needs to compute 
-        */
-        void addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite) {
-            if (this->isFull()) {
-                throw "List is full, cannot add actor to this list";
-            }
-            if (index > this->maxIndex) {
-                this->maxIndex = index;
-            } 
-            if (index < this->minIndex || this->minIndex < 0) {
-                this->minIndex = index;
-            }
-            this->numStepsToWrite = numStepsToWrite;
-            this->currentSize++;
-            list.push_back(std::make_tuple(actor, returnMessage));
-        }
-
-        /**
-        * Return a tuple of an actor and its returnMessage.
-        * The return message is 9999 or the index of the forcingFile it needs to acces
-        */
-        std::tuple<caf::actor,int> popActor() {
-            if (list.empty()) {
-                throw "List is empty, nothing to pop";
-            }
-            auto actor = list.back();
-            list.pop_back();
-            this->currentSize--;
-            return actor;
-        }
-
-
-        bool isEmpty() {
-            return list.empty();
-        }
-
-
-        /**
-         * When an actor fails we need to decrement the count
-         * so that this list becomes full when there is a failure
-         * 
-         * indexHRU - index of the HRU causing the error
-         */
-        void decrementMaxSize() {
-            this->maxSize--;
-        }
-
-        /**
-        * Remove the failed HRU from the list
-        *
-        */
-        void removeFailed(caf::actor actorRef) {
-            bool found = false;
-            for(std::vector<std::tuple<caf::actor, int>>::iterator it = this->list.begin(); it != this->list.end(); it++) {
-                if (std::get<0>(*it) == actorRef) {
-                    found = true;
-                    this->list.erase(it);
-                    this->currentSize--; this->maxSize--;
-                    break;
-                }
-            }
-
-            if (!found) {
-                throw "Element To Remove Not Found";
-            }
-        }
-};
-
-
-/**
- * @brief Class that manages which structure actors are held on
- * 
- */
-class OutputManager {
-    private:
-
-        int numVectors;
-        int avgSizeOfActorList;
-        bool runningFailures;
-        std::vector<ActorRefList*> list;
-        std::vector<int> failedHRU;
-        std::vector<int> failureReRun; // index used so we can add failedHRUs if they fail a second time
-
-
-
-    public:
-        // Constructor
-        OutputManager(int numVectors, int totalNumActors){
-            this->numVectors = numVectors;
-            int sizeOfOneVector = totalNumActors / numVectors;
-            this->avgSizeOfActorList = sizeOfOneVector;
-            this->runningFailures = false;
-            // Create the first n-1 vectors with the same size 
-            for (int i = 0; i < numVectors - 1; i++) {
-                auto refList = new ActorRefList(sizeOfOneVector);
-                totalNumActors = totalNumActors - sizeOfOneVector;
-                list.push_back(refList);
-            }
-            // Create the last vector with size however many actors are left
-            auto refList = new ActorRefList(totalNumActors);
-            list.push_back(refList);
-        }
-        // Deconstructor
-        ~OutputManager(){};
-
-        /**
-         * @brief Adds an actor to its respective list
-         * 
-         * @param actor Actor reference
-         * @param index Actor Index
-         * @param returnMessage Forcing File index or 9999
-         * @return int The list index that actor is added to.
-         */
-        int addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite) {
-            int listIndex;
-            if (this->runningFailures) {
-                // find the index of the structure this HRU is in
-                auto it = find(this->failureReRun.begin(), this->failureReRun.end(), index);
-
-                if (it != this->failureReRun.end()) {
-                    listIndex = it - this->failureReRun.begin();
-                } else {
-                    throw "Element Not Found in failureReRun list";
-                }
-
-                this->list[listIndex]->addActor(actor, index, returnMessage, numStepsToWrite);
-
-            } else {
-                // Index has to be subtracted by 1 because Fortran array starts at 1
-                listIndex = (index - 1) / this->avgSizeOfActorList;
-                if (listIndex > this->numVectors - 1) {
-                    listIndex =  this->numVectors - 1;
-                }
-
-                this->list[listIndex]->addActor(actor, index, returnMessage, numStepsToWrite);
-            }
-
-            return listIndex;
-        }
-
-        /**
-        * Remove tuple from list[index]
-        *
-        */
-        std::tuple<caf::actor,int> popActor(int index) {
-            if (index > this->numVectors - 1 || index < 0) {
-                throw "List Index Out Of Range";
-            } else if (this->list[index]->isEmpty()) {
-                throw "List is Empty, Nothing to pop";
-            }
-
-            return this->list[index]->popActor();
-        }
-
-
-        /** When a failure occurs an actor most likley will not already be on this list
-         * This method may and probably should not be used. Although needing to remove a
-         * specific element from a list may be needed.
-         * Remove the failed actor from the list
-         * Return the index of the list we removed the actor from
-         * This is so we can check if it is full
-         */
-        int removeFailed(caf::actor actorRef, int index) {
-            // Find the list this actor is on
-            int listIndex = (index - 1) / this->avgSizeOfActorList;
-            if (listIndex > this->numVectors - 1) {
-                listIndex =  this->numVectors - 1;
-            }
-            
-            this->list[listIndex]->removeFailed(actorRef);
-
-            return listIndex;
-        }
-
-        /**
-         * Decrease the size of the list
-         * Add this GRU to the failed list
-         */ 
-        int decrementMaxSize(int indexHRU) {
-            
-            this->failedHRU.push_back(indexHRU);
-
-            // Find the list this actor is on
-            int listIndex = (indexHRU - 1) / this->avgSizeOfActorList;
-            if (listIndex > this->numVectors - 1) {
-                listIndex =  this->numVectors - 1;
-            }
-
-            this->list[listIndex]->decrementMaxSize();
-            return listIndex;
-        }
-
-        void restartFailures() {
-            this->list.clear();
-            this->numVectors = this->failedHRU.size();
-            for (unsigned int i = 0; i < this->failedHRU.size(); i++) {
-                auto refList = new ActorRefList(1);
-                this->list.push_back(refList);
-            }
-
-            this->failureReRun = this->failedHRU;
-            this->failedHRU.clear();
-
-            this->runningFailures = true;
-
-        }
-
-        /**
-         * Get the number of steps to write from the correct listIndex
-         */
-        int getNumStepsToWrite(int listIndex) {
-
-            return this->list[listIndex]->getNumStepsToWrite();
-        }
-
-        bool isFull(int listIndex) {
-            if (listIndex > this->numVectors - 1) {
-                throw "List Index Out Of Range";
-            }
-            return this->list[listIndex]->isFull();
-        }
-
-        bool isEmpty(int listIndex) {
-            return this->list[listIndex]->isEmpty();
-        }
-
-        int getSize(int listIndex) {
-            if (listIndex > this->numVectors - 1) {
-                throw "List Index Out Of Range";
-            }
-            return this->list[listIndex]->getCurrentSize();
-        }
-
-        int getMinIndex(int listIndex) {
-            return this->list[listIndex]->getMinIndex();
-        }
-
-        int getMaxIndex(int listIndex) {
-            return this->list[listIndex]->getMaxIndex();
-        }
-
-        void addFailed(int indxHRU) {
-            this->failedHRU.push_back(indxHRU);
-        }
-
-};
-
-#endif 
\ No newline at end of file
diff --git a/build/source/actors/file_access_actor/cppwrap_fileAccess.f90 b/build/source/actors/file_access_actor/cppwrap_fileAccess.f90
index 8691a802925af74f8d606d9ebd5cd2d7c2b4476b..2687c4f8b84e977136cdf7e2e358c6f66245ce22 100644
--- a/build/source/actors/file_access_actor/cppwrap_fileAccess.f90
+++ b/build/source/actors/file_access_actor/cppwrap_fileAccess.f90
@@ -15,7 +15,7 @@ module cppwrap_fileAccess
   public::Init_OutputStruct
   public::initFailedHRUTracker
   public::FileAccessActor_ReadForcing
-  public::Create_Output_File
+  ! public::Create_Output_File
   public::FileAccessActor_WriteOutput
   
   contains
@@ -129,6 +129,7 @@ subroutine initFailedHRUTracker(numGRU) bind(C, name="initFailedHRUTracker")
   implicit none
   integer(c_int), intent(in)        :: numGRU
 
+  if (allocated(failedHRUs))then; deallocate(failedHRUs); endif;
   allocate(failedHRUs(numGRU))
 
   failedHRUs(:) = .false.
@@ -203,65 +204,6 @@ subroutine FileAccessActor_ReadForcing(handle_forcFileInfo, currentFile, stepsIn
 
 end subroutine FileAccessActor_ReadForcing
 
-subroutine Create_Output_File(&
-            handle_ncid,      & ! ncid of the output file
-            numGRU,           & ! number of GRUs assigned to this job
-            startGRU,         & ! Starting GRU indx for the job
-            err) bind(C, name="Create_Output_File")
-  USE globalData,only:fileout
-  USE summaActors_FileManager,only:OUTPUT_PATH,OUTPUT_PREFIX ! define output file
-  USE def_output_module,only:def_output                      ! module to define model output
-  USE globalData,only:gru_struc
-  USE var_lookup,only:maxVarFreq                             ! number of available output frequencies
-  USE globalData,only:outputTimeStep
-  USE globalData,only:finalizeStats
-  USE var_lookup,only:iLookFreq                              ! named variables for the frequency structure
-
-  
-  implicit none
-  type(c_ptr),intent(in), value        :: handle_ncid       ! ncid of the output file
-  integer(c_int),intent(in)            :: numGRU            ! numGRUs for the entire job (for file creation)
-  integer(c_int),intent(in)            :: startGRU          ! startGRU for the entire job (for file creation)
-  integer(c_int),intent(inout)         :: err               ! Error code
-
-  ! local variables
-  type(var_i),pointer                  :: ncid              ! ncid of the output file
-  character(LEN=256)                   :: startGRUString    ! String Variable to convert startGRU
-  character(LEN=256)                   :: numGRUString      ! String Varaible to convert numGRU
-  character(LEN=256)                   :: cmessage
-  integer(i4b)                         :: iGRU
-
-  call c_f_pointer(handle_ncid, ncid)
-
-  ! allocate space for the output file ID array
-  allocate(ncid%var(maxVarFreq))
-  ncid%var(:) = integerMissing
-
-  ! initialize finalizeStats for testing purposes
-  allocate(outputTimeStep(numGRU))
-  do iGRU = 1, numGRU
-    allocate(outputTimeStep(iGRU)%dat(maxVarFreq))
-    outputTimeStep(iGRU)%dat(:) = 1
-  end do 
-
-  finalizeStats(:) = .false.
-  finalizeStats(iLookFreq%timestep) = .true.
-  ! initialize number of hru and gru in global data
-  nGRUrun = numGRU
-  nHRUrun = numGRU
-
-  write(unit=startGRUString,fmt=*)startGRU
-  write(unit=numGRUString,fmt=*)  numGRU
-  fileout = trim(OUTPUT_PATH)//trim(OUTPUT_PREFIX)//"GRU"&
-              //trim(adjustl(startGRUString))//"-"//trim(adjustl(numGRUString))
-
-  ! def_output call will need to change to allow for numHRUs in future
-  ! NA_Domain numGRU = numHRU, this is why we pass numGRU twice
-  call def_output("summaVersion","buildTime","gitBranch","gitHash",numGRU,numGRU,&
-    gru_struc(1)%hruInfo(1)%nSoil,fileout,ncid,err,cmessage)
-    print*, "Creating Output File "//trim(fileout)
-end subroutine Create_Output_File
-
 subroutine Write_HRU_Param(&
         handle_ncid,       &
         indxGRU,           &
@@ -315,7 +257,6 @@ subroutine FileAccessActor_WriteOutput(&
                                 maxGRU,          & ! index of HRU we are currently writing for
                                 err) bind(C, name="FileAccessActor_WriteOutput")
   USE def_output_module,only:def_output                       ! module to define model output
-  USE globalData,only:gru_struc
   USE var_lookup,only:maxVarFreq                               ! # of available output frequencies
   USE writeOutput_module,only:writeBasin,writeTime,writeData
   USE globalData,only:structInfo
@@ -347,22 +288,19 @@ subroutine FileAccessActor_WriteOutput(&
   integer(i4b)                         :: iFreq
   integer(i4b)                         :: indxHRU=1
   integer(i4b), dimension(maxVarFreq)  :: outputTimestepUpdate
+  integer(i4b), dimension(maxVarFreq)  :: stepCounter
 
   call c_f_pointer(handle_ncid, ncid)
   ! ****************************************************************************
   ! *** write data
   ! ****************************************************************************
   do iGRU=minGRU, maxGRU
+    stepCounter(:) = outputTimeStep(iGRU)%dat(:) ! We want to avoid updating outputTimeStep
     do iStep=1, nSteps
-      call writeBasin(ncid,iGRU,outputTimeStep(iGRU)%dat(:),iStep,bvar_meta, &
+      call writeBasin(ncid,iGRU,stepCounter(:),iStep,bvar_meta, &
               outputStructure(1)%bvarStat(1)%gru(iGRU)%hru(indxHRU)%var, &
               outputStructure(1)%bvarStruct(1)%gru(iGRU)%hru(indxHRU)%var, bvarChild_map, err, cmessage)
-  
-
-      ! reset outputTimeStep
-      ! get the number of HRUs in the run domain
-      ! nHRUrun = sum(gru_struc%hruCount)
-      ! write time information
+      
       call writeTime(ncid,outputTimeStep(iGRU)%dat(:),iStep,time_meta, &
               outputStructure(1)%timeStruct(1)%gru(iGRU)%hru(indxHRU)%var,err,cmessage)
     end do ! istep
@@ -371,27 +309,27 @@ subroutine FileAccessActor_WriteOutput(&
   do iStruct=1,size(structInfo)
     select case(trim(structInfo(iStruct)%structName))
       case('forc')
-        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,minGRU,nSteps,&
+        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,nSteps,&
                       minGRU, maxGRU, numGRU, & 
                       forc_meta,outputStructure(1)%forcStat(1),outputStructure(1)%forcStruct(1),'forc', &
                       forcChild_map,outputStructure(1)%indxStruct(1),err,cmessage)
       case('prog')
-        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,minGRU,nSteps,&
+        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,nSteps,&
                       minGRU, maxGRU, numGRU, &
                       prog_meta,outputStructure(1)%progStat(1),outputStructure(1)%progStruct(1),'prog', &
                       progChild_map,outputStructure(1)%indxStruct(1),err,cmessage)
       case('diag')
-        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,minGRU,nSteps,&
+        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,nSteps,&
                       minGRU, maxGRU, numGRU, &
                       diag_meta,outputStructure(1)%diagStat(1),outputStructure(1)%diagStruct(1),'diag', &
                       diagChild_map,outputStructure(1)%indxStruct(1),err,cmessage)
       case('flux')
-        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,minGRU,nSteps,&
+        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,nSteps,&
                       minGRU, maxGRU, numGRU, &
                       flux_meta,outputStructure(1)%fluxStat(1),outputStructure(1)%fluxStruct(1),'flux', &
                       fluxChild_map,outputStructure(1)%indxStruct(1),err,cmessage)
       case('indx')
-        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,minGRU,nSteps,&
+        call writeData(ncid,outputTimeStep(minGRU)%dat(:),outputTimestepUpdate,maxLayers,nSteps,&
                       minGRU, maxGRU, numGRU, &
                       indx_meta,outputStructure(1)%indxStat(1),outputStructure(1)%indxStruct(1),'indx', &
                       indxChild_map,outputStructure(1)%indxStruct(1),err,cmessage)
@@ -407,9 +345,7 @@ end subroutine
 
 subroutine FileAccessActor_DeallocateStructures(handle_forcFileInfo, handle_ncid) bind(C,name="FileAccessActor_DeallocateStructures")
   USE netcdf_util_module,only:nc_file_close 
-  USE globalData,only:forcingDataStruct     
   USE globalData,only:structInfo                              ! information on the data structures
-  USE globalData,only:vecTime
   USE globalData,only:outputTimeStep
   USE globalData,only:failedHRUs
   USE summaActors_deallocateOuptutStruct,only:deallocateOutputStruc
@@ -423,8 +359,6 @@ subroutine FileAccessActor_DeallocateStructures(handle_forcFileInfo, handle_ncid
   character(LEN=256)                   :: cmessage
   character(LEN=256)                   :: message
   integer(i4b)                         :: err
-  integer(i4b)                         :: iFile
-  integer(i4b)                         :: iVar
 
   call c_f_pointer(handle_ncid, ncid)
   call c_f_pointer(handle_forcFileInfo, forcFileInfo)
@@ -438,23 +372,10 @@ subroutine FileAccessActor_DeallocateStructures(handle_forcFileInfo, handle_ncid
     endif   
   end do
   
-  ! Deallocate Forcing Structure
-  ! do iFile = 1, size(forcingDataStruct(:))
-  !   do iVar = 1, size(forcingDataStruct(iFile)%var(:))
-  !     if (allocated(forcingDataStruct(iFile)%var(iVar)%dataFromFile))then
-  !       deallocate(forcingDataStruct(iFile)%var(iVar)%dataFromFile)
-  !     endif
-  !   end do
-  !   deallocate(forcingDataStruct(iFile)%var_ix)
-  ! end do
-  ! deallocate(forcingDataStruct)
-
   deallocate(forcFileInfo)
-  ! deallocate(outputStructure)
   deallocate(outputTimeStep)
   deallocate(ncid)
   deallocate(failedHRUs)
-  ! if(allocated(vecTime)) then; deallocate(vecTime); endif
 
 end subroutine FileAccessActor_DeallocateStructures
 
diff --git a/build/source/actors/file_access_actor/FileAccessActor.h b/build/source/actors/file_access_actor/file_access_actor.cpp
similarity index 66%
rename from build/source/actors/file_access_actor/FileAccessActor.h
rename to build/source/actors/file_access_actor/file_access_actor.cpp
index 61c4da36f79906cc810fba78f1f865ec09ae1ccc..dad7a6326c2ebed738ef89fb9ff47d6d3bbaf880 100644
--- a/build/source/actors/file_access_actor/FileAccessActor.h
+++ b/build/source/actors/file_access_actor/file_access_actor.cpp
@@ -1,42 +1,47 @@
-#ifndef FILEACCESSACTOR_H_
-#define FILEACCESSACTOR_H_
+#include "caf/all.hpp"
+#include "file_access_actor.hpp"
+#include "output_manager.hpp"
+#include "forcing_file_info.hpp"
+#include "file_access_actor_subroutine_wrappers.hpp"
+#include "fortran_data_types.hpp"
+#include "message_atoms.hpp"
+#include "global.hpp"
+#include "json.hpp"
 
-#include "FileAccess.h"
-
-using namespace caf;
 using json = nlohmann::json;
 
-
-void initalizeFileAccessActor(stateful_actor<file_access_state>* self);
-int writeOutput(stateful_actor<file_access_state>* self, int indxGRU, int indxHRU, int numStepsToWrite, int returnMessage, caf::actor actorRef);
-int readForcing(stateful_actor<file_access_state>* self, int currentFile);
-int write(stateful_actor<file_access_state>* self, int listIndex);
-int parseSettings(stateful_actor<file_access_state>* self, std::string configPath);
+bool debug;
 
 
+namespace caf {
 
 behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU, int numGRU, 
     int outputStrucSize, std::string configPath, actor parent) {
-    // Set File_Access_Actor variables
+    aout(self) << "\n----------File_Access_Actor Started----------\n";
+    // Set Up timing Info we wish to track
+    self->state.file_access_timing = TimingInfo();
+    self->state.file_access_timing.addTimePoint("read_duration");
+    self->state.file_access_timing.addTimePoint("write_duration");
+
+
     self->state.parent = parent;
     self->state.numGRU = numGRU;
     self->state.startGRU = startGRU;
     self->state.outputStrucSize = outputStrucSize;
+    self->state.handle_forcing_file_info = new_handle_file_info();
+    self->state.handle_ncid = new_handle_var_i();
+    self->state.err = 0;
 
     // Get Settings from configuration file
-    if (parseSettings(self, configPath) == -1) {
-        aout(self) << "Error with JSON Settings File!!!\n";
-        self->quit();
-    } else {
-        aout(self) << "\nSETTINGS FOR FILE_ACCESS_ACTOR\n" <<
-        "Number of Vectors in Output Structure = " << self->state.num_vectors_in_output_manager << "\n";
-    }
+    self->state.num_vectors_in_output_manager = getSettings(configPath, "FileAccessActor", "num_vectors_in_output_manager", 
+		self->state.num_vectors_in_output_manager).value_or(1);
+        
     initalizeFileAccessActor(self);
 
     return {
         [=](initalize_outputStructure) {
             aout(self) << "Initalizing Output Structure" << std::endl;
-            Init_OutputStruct(self->state.handle_forcFileInfo, &self->state.outputStrucSize, 
+            Init_OutputStruct(self->state.handle_forcing_file_info, &self->state.outputStrucSize, 
                 &self->state.numGRU, &self->state.err);
         },
 
@@ -52,33 +57,32 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU
         [=](access_forcing, int currentFile, caf::actor refToRespondTo) {
             // aout(self) << "Received Current FIle = " << currentFile << std::endl;
             if (currentFile <= self->state.numFiles) {
-                if(self->state.forcFileList[currentFile - 1].isFileLoaded()) { // C++ starts at 0 Fortran starts at 1
+                if(self->state.forcing_file_list[currentFile - 1].isFileLoaded()) { // C++ starts at 0 Fortran starts at 1
                     // aout(self) << "ForcingFile Already Loaded \n";
                     self->send(refToRespondTo, run_hru_v, 
-                        self->state.forcFileList[currentFile - 1].getNumSteps());
+                        self->state.forcing_file_list[currentFile - 1].getNumSteps());
 
                 } else {
-                    self->state.readStart = std::chrono::high_resolution_clock::now();
+                    self->state.file_access_timing.updateStartPoint("read_duration");
                     
                     // Load the file
-                    FileAccessActor_ReadForcing(self->state.handle_forcFileInfo, &currentFile,
+                    FileAccessActor_ReadForcing(self->state.handle_forcing_file_info, &currentFile,
                         &self->state.stepsInCurrentFile, &self->state.startGRU, 
                         &self->state.numGRU, &self->state.err);
                     if (self->state.err != 0) {
                         aout(self) << "ERROR: Reading Forcing" << std::endl;
                     }
                     self->state.filesLoaded += 1;
-                    self->state.forcFileList[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
+                    self->state.forcing_file_list[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
 
-                    self->state.readEnd = std::chrono::high_resolution_clock::now();
-                    self->state.readDuration += calculateTime(self->state.readStart, self->state.readEnd);
+                    self->state.file_access_timing.updateEndPoint("read_duration");
                     // Check if we have loaded all forcing files
                     if(self->state.filesLoaded <= self->state.numFiles) {
                         self->send(self, access_forcing_internal_v, currentFile + 1);
                     }
 
                     self->send(refToRespondTo, run_hru_v, 
-                        self->state.forcFileList[currentFile - 1].getNumSteps());
+                        self->state.forcing_file_list[currentFile - 1].getNumSteps());
                 }
             } else {
                 aout(self) << currentFile << " is larger than expected" << std::endl;
@@ -90,29 +94,28 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU
             if (self->state.filesLoaded <= self->state.numFiles &&
                 currentFile <= self->state.numFiles) {
                 // aout(self) << "Loading in background, File:" << currentFile << "\n";
-                if (self->state.forcFileList[currentFile - 1].isFileLoaded()) {
+                if (self->state.forcing_file_list[currentFile - 1].isFileLoaded()) {
                     aout(self) << "File Loaded when shouldn't be \n";
                 }
-                self->state.readStart = std::chrono::high_resolution_clock::now();
-                FileAccessActor_ReadForcing(self->state.handle_forcFileInfo, &currentFile,
+                self->state.file_access_timing.updateStartPoint("read_duration");
+
+                FileAccessActor_ReadForcing(self->state.handle_forcing_file_info, &currentFile,
                     &self->state.stepsInCurrentFile, &self->state.startGRU, 
                     &self->state.numGRU, &self->state.err);
                 if (self->state.err != 0) {
                     aout(self) << "ERROR: Reading Forcing" << std::endl;
                 }
                 self->state.filesLoaded += 1;
-                self->state.forcFileList[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
-                
-                self->state.readEnd = std::chrono::high_resolution_clock::now();
-                self->state.readDuration += calculateTime(self->state.readStart, self->state.readEnd);
+                self->state.forcing_file_list[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
                 
+                self->state.file_access_timing.updateEndPoint("read_duration");
+
                 self->send(self, access_forcing_internal_v, currentFile + 1);
             } else {
                 aout(self) << "All Forcing Files Loaded \n";
             }
         },
 
-
         [=](write_output, int indxGRU, int indxHRU, int numStepsToWrite,
             caf::actor refToRespondTo) {
             int err;
@@ -122,8 +125,6 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU
             if (err != 0) {
                 aout(self) << "FILE_ACCESS_ACTOR - ERROR Writing Output \n";
             } 
-
-
         },
 
         [=](read_and_write, int indxGRU, int indxHRU, int numStepsToWrite, int currentFile, 
@@ -164,16 +165,15 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU
 
         [=](deallocate_structures) {
             aout(self) << "Deallocating Structure" << std::endl;
-            FileAccessActor_DeallocateStructures(self->state.handle_forcFileInfo, self->state.handle_ncid);
+            FileAccessActor_DeallocateStructures(self->state.handle_forcing_file_info, self->state.handle_ncid);
+            aout(self) << "\n________________FILE_ACCESS_ACTOR TIMING INFO RESULTS________________\n";
+            aout(self) << "Total Read Duration = " << self->state.file_access_timing.getDuration("read_duration").value_or(-1.0) << " Seconds\n";
+            aout(self) << "Total Write Duration = " << self->state.file_access_timing.getDuration("write_duration").value_or(-1.0) << " Seconds\n";
             
-            self->state.readDuration = self->state.readDuration / 1000; // Convert to milliseconds
-            self->state.readDuration = self->state.readDuration / 1000; // Convert to seconds
-
-            self->state.writeDuration = self->state.writeDuration / 1000; // Convert to milliseconds
-            self->state.writeDuration = self->state.writeDuration / 1000; // Convert to milliseconds
-            
-            self->send(self->state.parent, file_access_actor_done_v, self->state.readDuration, 
-                self->state.writeDuration);
+            self->send(self->state.parent, 
+                file_access_actor_done_v, 
+                self->state.file_access_timing.getDuration("read_duration").value_or(-1.0), 
+                self->state.file_access_timing.getDuration("write_duration").value_or(-1.0));
             self->quit();
         },
 
@@ -187,8 +187,8 @@ behavior file_access_actor(stateful_actor<file_access_state>* self, int startGRU
 void initalizeFileAccessActor(stateful_actor<file_access_state>* self) {
     int indx = 1;
     int err = 0;
-    // aout(self) << "Set Up the forcing file" << std::endl;
-    ffile_info_C(&indx, self->state.handle_forcFileInfo, &self->state.numFiles, &err);
+
+    ffile_info_C(&indx, self->state.handle_forcing_file_info, &self->state.numFiles, &err);
     if (err != 0) {
         aout(self) << "Error: ffile_info_C - File_Access_Actor \n";
         std::string function = "ffile_info_C";
@@ -226,10 +226,10 @@ void initalizeFileAccessActor(stateful_actor<file_access_state>* self) {
 
     initFailedHRUTracker(&self->state.numGRU);
 
-    Create_Output_File(self->state.handle_ncid, &self->state.numGRU, &self->state.startGRU, &err);
+    def_output(self->state.handle_ncid, &self->state.startGRU, &self->state.numGRU, &self->state.numGRU, &err);
     if (err != 0) {
         aout(self) << "ERROR: Create_OutputFile\n";
-        std::string function = "Create_Output_File";
+        std::string function = "def_output";
         self->send(self->state.parent, file_access_actor_err_v, function);
         self->quit();
         return;
@@ -237,7 +237,7 @@ void initalizeFileAccessActor(stateful_actor<file_access_state>* self) {
 
     // Initalize the output Structure
     aout(self) << "Initalizing Output Structure" << std::endl;
-    Init_OutputStruct(self->state.handle_forcFileInfo, &self->state.outputStrucSize, 
+    Init_OutputStruct(self->state.handle_forcing_file_info, &self->state.outputStrucSize, 
         &self->state.numGRU, &self->state.err);
 
     // Initalize the output manager  
@@ -247,7 +247,7 @@ void initalizeFileAccessActor(stateful_actor<file_access_state>* self) {
     // initalize the forcingFile array
     self->state.filesLoaded = 0;
     for (int i = 1; i <= self->state.numFiles; i++) {
-        self->state.forcFileList.push_back(forcingFile(i));
+        self->state.forcing_file_list.push_back(Forcing_File_Info(i));
     }
 }
 
@@ -269,7 +269,7 @@ int write(stateful_actor<file_access_state>* self, int listIndex) {
 
         }  else {
             self->send(get<0>(actor), run_hru_v, 
-                self->state.forcFileList[get<1>(actor) - 1].getNumSteps());
+                self->state.forcing_file_list[get<1>(actor) - 1].getNumSteps());
         }
     }
 
@@ -278,7 +278,8 @@ int write(stateful_actor<file_access_state>* self, int listIndex) {
 
 int writeOutput(stateful_actor<file_access_state>* self, int indxGRU, int indxHRU, 
     int numStepsToWrite, int returnMessage, caf::actor actorRef) {
-    self->state.writeStart = std::chrono::high_resolution_clock::now();
+    self->state.file_access_timing.updateStartPoint("write_duration");
+
     if (debug) {
         aout(self) << "Recieved Write Request From GRU: " << indxGRU << "\n";
     }
@@ -299,29 +300,25 @@ int writeOutput(stateful_actor<file_access_state>* self, int indxGRU, int indxHR
             aout(self) << "Size of list is " << self->state.output_manager->getSize(listIndex) << "\n";
         }
     }
-    
    
-    self->state.writeEnd = std::chrono::high_resolution_clock::now();
-    self->state.writeDuration += calculateTime(self->state.writeStart, self->state.writeEnd);
-
+    self->state.file_access_timing.updateEndPoint("write_duration");
     return err;
 
 }
 
 int readForcing(stateful_actor<file_access_state>* self, int currentFile) {
     // Check if we have already loaded this file
-    if(self->state.forcFileList[currentFile -1].isFileLoaded()) {
+    if(self->state.forcing_file_list[currentFile -1].isFileLoaded()) {
         if (debug)
             aout(self) << "ForcingFile Already Loaded \n";
         return 0;
     
-    } else {
-        
-        // File Needs to be loaded
-        self->state.readStart = std::chrono::high_resolution_clock::now();
-                    
+    } else { // File Needs to be loaded
+
+        self->state.file_access_timing.updateStartPoint("read_duration");
+
         // Load the file
-        FileAccessActor_ReadForcing(self->state.handle_forcFileInfo, &currentFile,
+        FileAccessActor_ReadForcing(self->state.handle_forcing_file_info, &currentFile,
             &self->state.stepsInCurrentFile, &self->state.startGRU, 
             &self->state.numGRU, &self->state.err);
         
@@ -333,40 +330,12 @@ int readForcing(stateful_actor<file_access_state>* self, int currentFile) {
             return -1;
         } else {
             self->state.filesLoaded += 1;
-            self->state.forcFileList[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
-
-            self->state.readEnd = std::chrono::high_resolution_clock::now();
-            self->state.readDuration += calculateTime(self->state.readStart, self->state.readEnd);
+            self->state.forcing_file_list[currentFile - 1].updateNumSteps(self->state.stepsInCurrentFile);
+            self->state.file_access_timing.updateEndPoint("read_duration");
             return 0;
         }
     }
 
 }
 
-int parseSettings(stateful_actor<file_access_state>* self, std::string configPath) {
-    json settings;
-    std::string SummaActorsSettigs = "/Summa_Actors_Settings.json";
-	std::ifstream settings_file(configPath + SummaActorsSettigs);
-	settings_file >> settings;
-	settings_file.close();
-    
-    if (settings.find("FileAccessActor") != settings.end()) {
-        json FileAccessActorConfig = settings["FileAccessActor"];
-        // Find the File Manager Path
-        if (FileAccessActorConfig.find("num_vectors_in_output_manager") !=  FileAccessActorConfig.end()) {
-            self->state.num_vectors_in_output_manager = FileAccessActorConfig["num_vectors_in_output_manager"];
-        } else {
-            aout(self) << "Error Finding FileManagerPath - Exiting as this is needed\n";
-            return -1;
-        }
-
-        return 0;
-    } else {
-        aout(self) << "Error Finding JobActor in JSON file - Exiting as there is no path for the fileManger\n";
-        return -1;
-    }
-}
-
-
-
-#endif
\ No newline at end of file
+} // end namespace
\ No newline at end of file
diff --git a/build/source/actors/file_access_actor/forcing_file_info.cpp b/build/source/actors/file_access_actor/forcing_file_info.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..13f1ec0934d301e6aa4fe6e9e5b391b88e6c29b6
--- /dev/null
+++ b/build/source/actors/file_access_actor/forcing_file_info.cpp
@@ -0,0 +1,27 @@
+#include "forcing_file_info.hpp"
+
+Forcing_File_Info::Forcing_File_Info(int file_ID) {
+    this->file_ID = file_ID;
+    this->num_steps = 0;
+    this->is_loaded = false;
+}
+
+int Forcing_File_Info::getNumSteps() {
+    return this->num_steps;
+}
+
+bool Forcing_File_Info::isFileLoaded() {
+    return this->is_loaded;
+}
+
+void Forcing_File_Info::updateIsLoaded() {
+    this->is_loaded = true;
+}
+
+
+void Forcing_File_Info::updateNumSteps(int num_steps) {
+    this->num_steps = num_steps;
+    this->is_loaded = true;
+}
+
+
diff --git a/build/source/actors/file_access_actor/output_manager.cpp b/build/source/actors/file_access_actor/output_manager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f8637ef598b9fffd8811230151f39c70bb26ec7b
--- /dev/null
+++ b/build/source/actors/file_access_actor/output_manager.cpp
@@ -0,0 +1,215 @@
+#include "output_manager.hpp"
+#include "caf/all.hpp"
+
+// ActorRefList
+ActorRefList::ActorRefList(int maxSize){
+    this->currentSize = 0;
+    this->maxSize = maxSize;
+}
+
+ActorRefList::~ActorRefList(){}
+
+int ActorRefList::getMaxIndex() {
+    return this->maxIndex;
+}
+
+int ActorRefList::getMinIndex() {
+    return this->minIndex;
+}
+
+int ActorRefList::getCurrentSize() {
+    return this->currentSize;
+}
+
+int ActorRefList::getMaxSize() {
+    return this->maxSize;
+}
+
+int ActorRefList::getNumStepsToWrite() {
+    return this->numStepsToWrite;
+}
+
+bool ActorRefList::isFull() {
+    return list.size() == this->maxSize;
+}
+
+void ActorRefList::addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite) {
+    if (this->isFull()) {
+        throw "List is full, cannot add actor to this list";
+    }
+    if (index > this->maxIndex) {
+        this->maxIndex = index;
+    } 
+    if (index < this->minIndex || this->minIndex < 0) {
+        this->minIndex = index;
+    }
+    this->numStepsToWrite = numStepsToWrite;
+    this->currentSize++;
+    list.push_back(std::make_tuple(actor, returnMessage));
+}
+
+std::tuple<caf::actor,int> ActorRefList::popActor() {
+    if (list.empty()) {
+        throw "List is empty, nothing to pop";
+    }
+    auto actor = list.back();
+    list.pop_back();
+    this->currentSize--;
+    return actor;
+}
+
+bool ActorRefList::isEmpty() {
+    return list.empty();
+}
+
+void ActorRefList::decrementMaxSize() {
+    this->maxSize--;
+}
+
+void ActorRefList::removeFailed(caf::actor actorRef) {
+    bool found = false;
+    for(std::vector<std::tuple<caf::actor, int>>::iterator it = this->list.begin(); it != this->list.end(); it++) {
+        if (std::get<0>(*it) == actorRef) {
+            found = true;
+            this->list.erase(it);
+            this->currentSize--; this->maxSize--;
+            break;
+        }
+    }
+
+    if (!found) {
+        throw "Element To Remove Not Found";
+    }
+}
+
+// OutputManager
+OutputManager::OutputManager(int numVectors, int totalNumActors){
+    this->numVectors = numVectors;
+    int sizeOfOneVector = totalNumActors / numVectors;
+    this->avgSizeOfActorList = sizeOfOneVector;
+    this->runningFailures = false;
+    // Create the first n-1 vectors with the same size 
+    for (int i = 0; i < numVectors - 1; i++) {
+        auto refList = new ActorRefList(sizeOfOneVector);
+        totalNumActors = totalNumActors - sizeOfOneVector;
+        list.push_back(refList);
+    }
+    // Create the last vector with size however many actors are left
+    auto refList = new ActorRefList(totalNumActors);
+    list.push_back(refList);
+}
+
+OutputManager::~OutputManager(){};
+
+int OutputManager::addActor(caf::actor actor, int index, int returnMessage, int numStepsToWrite) {
+    int listIndex;
+    if (this->runningFailures) {
+        // find the index of the structure this HRU is in
+        auto it = find(this->failureReRun.begin(), this->failureReRun.end(), index);
+
+        if (it != this->failureReRun.end()) {
+            listIndex = it - this->failureReRun.begin();
+        } else {
+            throw "Element Not Found in failureReRun list";
+        }
+
+        this->list[listIndex]->addActor(actor, index, returnMessage, numStepsToWrite);
+
+    } else {
+        // Index has to be subtracted by 1 because Fortran array starts at 1
+        listIndex = (index - 1) / this->avgSizeOfActorList;
+        if (listIndex > this->numVectors - 1) {
+            listIndex =  this->numVectors - 1;
+        }
+
+        this->list[listIndex]->addActor(actor, index, returnMessage, numStepsToWrite);
+    }
+
+    return listIndex;
+}
+
+std::tuple<caf::actor,int> OutputManager::popActor(int index) {
+    if (index > this->numVectors - 1 || index < 0) {
+        throw "List Index Out Of Range";
+    } else if (this->list[index]->isEmpty()) {
+        throw "List is Empty, Nothing to pop";
+    }
+
+    return this->list[index]->popActor();
+}
+
+int OutputManager::removeFailed(caf::actor actorRef, int index) {
+    // Find the list this actor is on
+    int listIndex = (index - 1) / this->avgSizeOfActorList;
+    if (listIndex > this->numVectors - 1) {
+        listIndex =  this->numVectors - 1;
+    }
+    
+    this->list[listIndex]->removeFailed(actorRef);
+
+    return listIndex;
+}
+
+int OutputManager::decrementMaxSize(int indexHRU) {
+    
+    this->failedHRU.push_back(indexHRU);
+
+    // Find the list this actor is on
+    int listIndex = (indexHRU - 1) / this->avgSizeOfActorList;
+    if (listIndex > this->numVectors - 1) {
+        listIndex =  this->numVectors - 1;
+    }
+
+    this->list[listIndex]->decrementMaxSize();
+    return listIndex;
+}
+
+void OutputManager::restartFailures() {
+    this->list.clear();
+    this->numVectors = this->failedHRU.size();
+    for (unsigned int i = 0; i < this->failedHRU.size(); i++) {
+        auto refList = new ActorRefList(1);
+        this->list.push_back(refList);
+    }
+
+    this->failureReRun = this->failedHRU;
+    this->failedHRU.clear();
+
+    this->runningFailures = true;
+
+}
+
+int OutputManager::getNumStepsToWrite(int listIndex) {
+
+    return this->list[listIndex]->getNumStepsToWrite();
+}
+
+bool OutputManager::isFull(int listIndex) {
+    if (listIndex > this->numVectors - 1) {
+        throw "List Index Out Of Range";
+    }
+    return this->list[listIndex]->isFull();
+}
+
+bool OutputManager::isEmpty(int listIndex) {
+    return this->list[listIndex]->isEmpty();
+}
+
+int OutputManager::getSize(int listIndex) {
+    if (listIndex > this->numVectors - 1) {
+        throw "List Index Out Of Range";
+    }
+    return this->list[listIndex]->getCurrentSize();
+}
+
+int OutputManager::getMinIndex(int listIndex) {
+    return this->list[listIndex]->getMinIndex();
+}
+
+int OutputManager::getMaxIndex(int listIndex) {
+    return this->list[listIndex]->getMaxIndex();
+}
+
+void OutputManager::addFailed(int indxHRU) {
+    this->failedHRU.push_back(indxHRU);
+}
\ No newline at end of file
diff --git a/build/source/actors/global/global.cpp b/build/source/actors/global/global.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dff7bf4d1fb978d6d7b4e9eb15c59f3f2accdbc4
--- /dev/null
+++ b/build/source/actors/global/global.cpp
@@ -0,0 +1,9 @@
+#include "global.hpp"
+#include <chrono>
+
+
+double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, 
+    std::chrono::time_point<std::chrono::system_clock> end) {
+    
+    return std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
+}
diff --git a/build/source/actors/global/global.h b/build/source/actors/global/global.h
deleted file mode 100644
index b3104cba17ee6579950ee4c93168c7642cc86edd..0000000000000000000000000000000000000000
--- a/build/source/actors/global/global.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef COMMONFUNCTIONS_H_
-#define COMMONFUNCTIONS_H_
-
-#include <chrono>
-
-
-// Gobal Flag for Debuging only main function will change this
-bool debug;
-
-/**
- * Return the time between to time points
- */
-double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, 
-    std::chrono::time_point<std::chrono::system_clock> end);
-
-
-
-double calculateTime(std::chrono::time_point<std::chrono::system_clock> start, 
-    std::chrono::time_point<std::chrono::system_clock> end) {
-    
-    return std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
-}
-
-
-
-
-#endif
\ No newline at end of file
diff --git a/build/source/actors/global/timing_info.cpp b/build/source/actors/global/timing_info.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5c83987b1583bc7ce6407afda6eddf1ee4b875f4
--- /dev/null
+++ b/build/source/actors/global/timing_info.cpp
@@ -0,0 +1,70 @@
+#include "timing_info.hpp"
+#include <chrono>
+#include <algorithm>
+
+TimingInfo::TimingInfo() {
+    this->num_time_points = 0;
+}
+
+TimingInfo::~TimingInfo(){}
+
+std::optional<double> TimingInfo::calculateDuration(int index) {
+    if (!this->start[index].has_value() || !this->end[index].has_value()) {
+        return {};
+    } else {
+        auto start = this->start[index].value();
+        auto end = this->end[index].value();
+        return std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
+
+    }
+}
+
+std::optional<int> TimingInfo::getIndex(std::string time_point_name) {
+
+    auto itr = std::find(this->name_of_time_point.begin(), 
+        this->name_of_time_point.end(),
+        time_point_name);
+    if (itr != this->name_of_time_point.end()) {
+        return std::distance(this->name_of_time_point.begin(), itr);
+    } else {
+        return {};
+    }
+}
+
+void TimingInfo::addTimePoint(std::string time_point_name) {
+    this->name_of_time_point.push_back(time_point_name);
+    this->start.push_back({});
+    this->end.push_back({});
+    this->duration.push_back(0.0);
+    this->num_time_points++;
+}
+
+void TimingInfo::updateStartPoint(std::string time_point_name) {
+    std::optional<int> index = getIndex(time_point_name);
+
+    if (index.has_value()) {
+        this->start[index.value()] = std::chrono::high_resolution_clock::now();
+    }
+}
+
+void TimingInfo::updateEndPoint(std::string time_point_name) {
+    std::optional<int> index = getIndex(time_point_name);
+    if (index.has_value()) {
+        this->end[index.value()] = std::chrono::high_resolution_clock::now();
+        std::optional<double> duration = calculateDuration(index.value());
+        if (duration.has_value())
+            this->duration[index.value()] += duration.value();
+    }
+}
+
+std::optional<double> TimingInfo::getDuration(std::string time_point_name) {
+    std::optional<int> index = getIndex(time_point_name);
+    if (index.has_value()) {
+        double duration = this->duration[index.value()];
+        duration = duration / 1000; // convert to miliseconds
+        duration = duration / 1000; // convert to seconds
+        return duration;
+    } else {
+        return {};
+    }
+}
\ No newline at end of file
diff --git a/build/source/actors/hru_actor/cppwrap_hru.f90 b/build/source/actors/hru_actor/cppwrap_hru.f90
index 87587d061b4773e5f6d12eea0a4cedcc33ae1b22..11b27e42a0427b2f57d6d7aa5cccdd225395d9d2 100644
--- a/build/source/actors/hru_actor/cppwrap_hru.f90
+++ b/build/source/actors/hru_actor/cppwrap_hru.f90
@@ -6,7 +6,8 @@ USE data_types
 USE globalData
 
 implicit none
-public::Initialize
+! public::Initialize ! This is called Directly by the actors code
+! The above is here just in case I look here again
 public::SetupParam
 public::Restart
 public::Forcing
@@ -16,182 +17,6 @@ public::Write_Param_C
 
 contains
 
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-! *************** Initalize Structures For HRU ************************
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-subroutine Initialize(&
-  indxGRU,            &
-  num_steps,          &
-  ! statistics structures
-  handle_forcStat,    & !  model forcing data
-  handle_progStat,    & !  model prognostic (state) variables
-  handle_diagStat,    & !  model diagnostic variables
-  handle_fluxStat,    & !  model fluxes
-  handle_indxStat,    & !  model indices
-  handle_bvarStat,    & !  basin-average variables
-  ! primary data structures (scalars)
-  handle_timeStruct,  & !  model time data
-  handle_forcStruct,  & !  model forcing data
-  handle_attrStruct,  & !  local attributes for each HRU
-  handle_typeStruct,  & !  local classification of soil veg etc. for each HRU
-  handle_idStruct,    & ! 
-  ! primary data structures (variable length vectors)
-  handle_indxStruct,  & !  model indices
-  handle_mparStruct,  & !  model parameters
-  handle_progStruct,  & !  model prognostic (state) variables
-  handle_diagStruct,  & !  model diagnostic variables
-  handle_fluxStruct,  & !  model fluxes
-  ! basin-average structures
-  handle_bparStruct,  & !  basin-average parameters
-  handle_bvarStruct,  & !  basin-average variables
-  ! ancillary data structures
-  handle_dparStruct,  & !  default model parameters
-  ! local HRU data
-  handle_startTime,   & ! start time for the model simulation
-  handle_finshTime,   & ! end time for the model simulation
-  handle_refTime,     & ! reference time for the model simulation
-  handle_oldTime,     & ! time for the previous model time step
-  ! miscellaneous variables
-  err) bind(C,name='Initialize')
-
-  use summa4chm_init,only:summa4chm_initialize          
-
-  implicit none
-  ! calling variables
-  integer(c_int),intent(in)             :: indxGRU
-  integer(c_int),intent(out)            :: num_steps
-  ! statistics structures
-  type(c_ptr), intent(in), value        :: handle_forcStat !  model forcing data
-  type(c_ptr), intent(in), value        :: handle_progStat !  model prognostic (state) variables
-  type(c_ptr), intent(in), value        :: handle_diagStat !  model diagnostic variables
-  type(c_ptr), intent(in), value        :: handle_fluxStat !  model fluxes
-  type(c_ptr), intent(in), value        :: handle_indxStat !  model indices
-  type(c_ptr), intent(in), value        :: handle_bvarStat !  basin-average variables
-  ! primary data structures (scalars)
-  type(c_ptr), intent(in), value        :: handle_timeStruct !  model time data
-  type(c_ptr), intent(in), value        :: handle_forcStruct !  model forcing data
-  type(c_ptr), intent(in), value        :: handle_attrStruct !  local attributes for each HRU
-  type(c_ptr), intent(in), value        :: handle_typeStruct !  local classification of soil veg etc. for each HRU
-  type(c_ptr), intent(in), value        :: handle_idStruct ! 
-  ! primary data structures (variable length vectors)
-  type(c_ptr), intent(in), value        :: handle_indxStruct !  model indices
-  type(c_ptr), intent(in), value        :: handle_mparStruct !  model parameters
-  type(c_ptr), intent(in), value        :: handle_progStruct !  model prognostic (state) variables
-  type(c_ptr), intent(in), value        :: handle_diagStruct !  model diagnostic variables
-  type(c_ptr), intent(in), value        :: handle_fluxStruct !  model fluxes
-  ! basin-average structures
-  type(c_ptr), intent(in), value        :: handle_bparStruct !  basin-average parameters
-  type(c_ptr), intent(in), value        :: handle_bvarStruct !  basin-average variables
-  ! ancillary data structures
-  type(c_ptr), intent(in), value        :: handle_dparStruct !  default model parameters
-  ! local hru data structures
-  type(c_ptr), intent(in), value        :: handle_startTime  ! start time for the model simulation
-  type(c_ptr), intent(in), value        :: handle_finshTime ! end time for the model simulation
-  type(c_ptr), intent(in), value        :: handle_refTime    ! reference time for the model simulation
-  type(c_ptr), intent(in), value        :: handle_oldTime    ! time for the previous model time step 
-  integer(c_int),intent(inout)          :: err
-  !---------------------------------------------------------------------------------------------------  
-  ! local variables
-
-  ! statistics structures
-  type(var_dlength),pointer              :: forcStat                   !  model forcing data
-  type(var_dlength),pointer              :: progStat                   !  model prognostic (state) variables
-  type(var_dlength),pointer              :: diagStat                   !  model diagnostic variables
-  type(var_dlength),pointer              :: fluxStat                   !  model fluxes
-  type(var_dlength),pointer              :: indxStat                   !  model indices
-  type(var_dlength),pointer              :: bvarStat                   !  basin-average variabl
-  ! primary data structures (scalars)
-  type(var_i),pointer                    :: timeStruct                 !  model time data
-  type(var_d),pointer                    :: forcStruct                 !  model forcing data
-  type(var_d),pointer                    :: attrStruct                 !  local attributes for each HRU
-  type(var_i),pointer                    :: typeStruct                 !  local classification of soil veg etc. for each HRU
-  type(var_i8),pointer                   :: idStruct                   ! 
-  ! primary data structures (variable length vectors)
-  type(var_ilength),pointer              :: indxStruct                 !  model indices
-  type(var_dlength),pointer              :: mparStruct                 !  model parameters
-  type(var_dlength),pointer              :: progStruct                 !  model prognostic (state) variables
-  type(var_dlength),pointer              :: diagStruct                 !  model diagnostic variables
-  type(var_dlength),pointer              :: fluxStruct                 !  model fluxes
-  ! basin-average structures
-  type(var_d),pointer                    :: bparStruct                 !  basin-average parameters
-  type(var_dlength),pointer              :: bvarStruct                 !  basin-average variables
-  ! ancillary data structures
-  type(var_d),pointer                    :: dparStruct                 !  default model parameters
-  ! local HRU data structures
-  type(var_i),pointer                    :: startTime                  ! start time for the model simulation
-  type(var_i),pointer                    :: finshTime                  ! end time for the model simulation
-  type(var_i),pointer                    :: refTime                    ! reference time for the model simulation
-  type(var_i),pointer                    :: oldTime                    ! time for the previous model time step 
-  character(len=256)                     :: message
-
-
-  ! getting data
-  call c_f_pointer(handle_forcStat, forcStat)
-  call c_f_pointer(handle_progStat, progStat)
-  call c_f_pointer(handle_diagStat, diagStat)
-  call c_f_pointer(handle_fluxStat, fluxStat)
-  call c_f_pointer(handle_indxStat, indxStat)
-  call c_f_pointer(handle_bvarStat, bvarStat)
-  call c_f_pointer(handle_timeStruct, timeStruct)
-  call c_f_pointer(handle_forcStruct, forcStruct)
-  call c_f_pointer(handle_attrStruct, attrStruct)
-  call c_f_pointer(handle_typeStruct, typeStruct)
-  call c_f_pointer(handle_idStruct, idStruct)
-  call c_f_pointer(handle_indxStruct, indxStruct)
-  call c_f_pointer(handle_mparStruct, mparStruct)
-  call c_f_pointer(handle_progStruct, progStruct)
-  call c_f_pointer(handle_diagStruct, diagStruct)
-  call c_f_pointer(handle_fluxStruct, fluxStruct)
-  call c_f_pointer(handle_bparStruct, bparStruct)
-  call c_f_pointer(handle_bvarStruct, bvarStruct)
-  call c_f_pointer(handle_dparStruct, dparStruct)
-  call c_f_pointer(handle_startTime, startTime)
-  call c_f_pointer(handle_finshTime, finshTime)
-  call c_f_pointer(handle_refTime, refTime)
-  call c_f_pointer(handle_oldTime, oldTime)
-
-
-  call summa4chm_initialize(&
-    indxGRU,      & ! index of the parent GRU
-    num_steps,    &
-    ! statistics structures
-    forcStat,     & ! model forcing data
-    progStat,     & ! model prognostic (state) variables
-    diagStat,     & ! model diagnostic variables
-    fluxStat,     & ! model fluxes
-    indxStat,     & ! model indices
-    bvarStat,     & ! basin-average variables
-    ! primary data structures (scalars)
-    timeStruct,   & ! model time data
-    forcStruct,   & ! model forcing data
-    attrStruct,   & ! local attributes for each HRU
-    typeStruct,   & ! local classification of soil veg etc. for each HRU
-    idStruct,     & ! 
-    ! primary data structures (variable length vectors)
-    indxStruct,   & ! model indices
-    mparStruct,   & ! model parameters
-    progStruct,   & ! model prognostic (state) variables
-    diagStruct,   & ! model diagnostic variables
-    fluxStruct,   & ! model fluxes
-    ! basin-average structures
-    bparStruct,   & ! basin-average parameters
-    bvarStruct,   & ! basin-average variables
-    ! ancillary data structures
-    dparStruct,   & ! default model parameters
-    startTime,    & ! start time for the model simulation
-    finshTime,    & ! end time for the model simulation
-    refTime,      & ! reference time for the model simulation
-    oldTime,      & ! time for the previous model time step 
-    ! miscellaneous variables
-    err, message)
-
-  if(err/=0)then
-    message=trim(message)
-    print*, message
-  endif
-
-end subroutine Initialize  
-
 ! **********************************************************************************************************
 ! public subroutine SetupParam: initializes parameter data structures (e.g. vegetation and soil parameters).
 ! **********************************************************************************************************
diff --git a/build/source/actors/hru_actor/HRUActor.h b/build/source/actors/hru_actor/hru_actor.cpp
similarity index 62%
rename from build/source/actors/hru_actor/HRUActor.h
rename to build/source/actors/hru_actor/hru_actor.cpp
index 12ea48016f972406083fe9e841667feb95387f69..90b60db61a71e33454bc90879e4f4324e14342ae 100644
--- a/build/source/actors/hru_actor/HRUActor.h
+++ b/build/source/actors/hru_actor/hru_actor.cpp
@@ -1,26 +1,24 @@
-#ifndef HRUActor_H_
-#define HRUActor_H_
-
-#include "HRU.h"
-using json = nlohmann::json;
-
-
-/**
- * @brief HRU Actor is reponsible for carrying out the computation component of SUMMA
- * 
- * @param self The Actor Ref
- * @param refGRU The GRU we are computing in reference to the forcingFile
- * @param indxGRU The GRU we are computing's index in gru_struc
- * @param parent 
- * @return behavior 
- */
+#include "caf/all.hpp"
+#include "hru_actor.hpp"
+#include "global.hpp"
+#include "message_atoms.hpp"
+#include "hru_actor_subroutine_wrappers.hpp"
+
+
+namespace caf {
+
 behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
-    std::string configPath,
-    caf::actor file_access_actor, int outputStrucSize, caf::actor parent) {
+    std::string configPath, caf::actor file_access_actor, int outputStrucSize, caf::actor parent) {
+    
     // Timing Information
-    self->state.start = std::chrono::high_resolution_clock::now();
-    self->state.duration            = 0.0;
-    self->state.initDuration        = 0.0;
+    self->state.hru_timing = TimingInfo();
+    self->state.hru_timing.addTimePoint("total_duration");
+    self->state.hru_timing.updateStartPoint("total_duration");
+    // Add the rest of the timing
+    self->state.hru_timing.addTimePoint("init_duration");
+    self->state.hru_timing.addTimePoint("forcing_duration");
+    self->state.hru_timing.addTimePoint("run_physics_duration");
+    self->state.hru_timing.addTimePoint("write_output_duration");
 
     // Actor References
     self->state.file_access_actor = file_access_actor;
@@ -41,7 +39,13 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
     self->state.iFile = 1;
 
     // Get the settings for the HRU
-    parseSettings(self, configPath);
+    // parseSettings(self, configPath);
+
+    self->state.printOutput = getSettings(configPath, "HRUActor", "printOutput", 
+		self->state.printOutput).value_or(true);
+    self->state.outputFrequency = getSettings(configPath, "HRUActor", "outputFrequency", 
+		self->state.outputFrequency).value_or(500);
+    
     // We only want to print this once
     if (indxGRU == 1) {
         aout(self) << "\nSETTINGS FOR HRU_ACTOR\n";
@@ -51,16 +55,14 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
 
 
     Initialize_HRU(self);
-
-    self->state.end = std::chrono::high_resolution_clock::now();
-    self->state.duration += calculateTime(self->state.start, self->state.end);
-
+    self->state.hru_timing.updateEndPoint("total_duration");
     self->send(self->state.parent, done_init_hru_v);
 
     return {
         // Starts the HRU and tells it to ask for data from the file_access_actor
         [=](start_hru) {
-            self->state.start = std::chrono::high_resolution_clock::now();
+            self->state.hru_timing.updateStartPoint("total_duration");
+
             
             int err;
             
@@ -76,35 +78,33 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
             
             
             self->send(self->state.file_access_actor, access_forcing_v, self->state.iFile, self);
-            self->state.end = std::chrono::high_resolution_clock::now();
-            self->state.duration += calculateTime(self->state.start, self->state.end);
+            self->state.hru_timing.updateEndPoint("total_duration");
         },
 
         [=](done_write) {
-            self->state.start = std::chrono::high_resolution_clock::now();
+            self->state.hru_timing.updateStartPoint("total_duration");
 
             // We receive a done_write message so we ensure that
             // stepsInCurrentFFile remains unchanged
             if (self->state.timestep >= self->state.num_steps) {
-                
-                self->state.end = std::chrono::high_resolution_clock::now();
-                self->state.duration += calculateTime(self->state.start, self->state.end);
-                // Tell our parent we are done, convert all timings to seconds
+                self->state.hru_timing.updateEndPoint("total_duration");
 
-                self->state.duration = self->state.duration / 1000; // Convert to milliseconds
-                self->state.initDuration = self->state.initDuration / 1000; // Convert to milliseconds
-                self->state.forcingDuration = self->state.forcingDuration / 1000; // Convert to milliseconds
-                self->state.runPhysicsDuration = self->state.runPhysicsDuration / 1000; // Convert to milliseconds
-                self->state.writeOutputDuration = self->state.writeOutputDuration / 1000; // Convert to milliseconds
+                // Tell our parent we are done, convert all timings to seconds
+                aout(self) << "\n________________HRU TIMING INFO RESULTS________________\n";
+                aout(self) << "Total Duration = " << self->state.hru_timing.getDuration("total_duration").value_or(-1.0) << " Seconds\n";
+                aout(self) << "Init Duration = " << self->state.hru_timing.getDuration("init_duration").value_or(-1.0) << " Seconds\n";
+                aout(self) << "Forcing Duration = " << self->state.hru_timing.getDuration("forcing_duration").value_or(-1.0) << " Seconds\n";
+                aout(self) << "Run Physics Duration = " << self->state.hru_timing.getDuration("run_physics_duration").value_or(-1.0) << " Seconds\n";
+                aout(self) << "Write Output Duration = " << self->state.hru_timing.getDuration("write_output_duration").value_or(-1.0) << " Seconds\n\n";
 
                 self->send(self->state.parent, 
                     done_hru_v,
                     self->state.indxGRU, 
-                    self->state.duration / 1000,
-                    self->state.initDuration / 1000, 
-                    self->state.forcingDuration / 1000, 
-                    self->state.runPhysicsDuration / 1000, 
-                    self->state.writeOutputDuration / 1000);
+                    self->state.hru_timing.getDuration("total_duration").value_or(-1.0),
+                    self->state.hru_timing.getDuration("init_duration").value_or(-1.0), 
+                    self->state.hru_timing.getDuration("forcing_duration").value_or(-1.0), 
+                    self->state.hru_timing.getDuration("run_physics_duration").value_or(-1.0), 
+                    self->state.hru_timing.getDuration("write_output_duration").value_or(-1.0));
                 
                 deallocateHRUStructures(self);
 
@@ -112,14 +112,13 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
                 return;
             }
 
-            self->state.end = std::chrono::high_resolution_clock::now();
-            self->state.duration += calculateTime(self->state.start, self->state.end);
-            
+            self->state.hru_timing.updateEndPoint("total_duration");
             self->send(self, run_hru_v, self->state.stepsInCurrentFFile);
         },
 
         [=](run_hru, int stepsInCurrentFFile) {
-            self->state.start = std::chrono::high_resolution_clock::now();
+            self->state.hru_timing.updateStartPoint("total_duration");
+
             bool keepRunning = true;
             int err = 0;
             self->state.stepsInCurrentFFile = stepsInCurrentFFile;
@@ -133,16 +132,11 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
                 self->state.outputStep += 1;
                 self->state.forcingStep += 1;
 
-                // if (self->state.timestep == 450 && self->state.indxGRU == 5) {
-                //     err = 20;
-                // }
-
                 keepRunning = check_HRU(self, err); // check if we are done, need to write
 
             }
      
-            self->state.end = std::chrono::high_resolution_clock::now();
-            self->state.duration += calculateTime(self->state.start, self->state.end);
+            self->state.hru_timing.updateEndPoint("total_duration");
 
         },
 
@@ -151,51 +145,14 @@ behavior hru_actor(stateful_actor<hru_state>* self, int refGRU, int indxGRU,
             self->state.dt_init_factor = dt_init_factor;
         },
     };
-    /*********************************************************************************************************
-     *********************************** END ACTOR MESSAGE HANDLERS ******************************************
-     *********************************************************************************************************/
 }
 
-void parseSettings(stateful_actor<hru_state>* self, std::string configPath) {
-    json settings;
-    std::string SummaActorsSettings = "/Summa_Actors_Settings.json";
-    std::ifstream settings_file(configPath + SummaActorsSettings);
-    settings_file >> settings;
-    settings_file.close();
-
-    if (settings.find("HRUActor") != settings.end()) {
-        json HRUActorConfig = settings["HRUActor"];
-        // find if we want to print output to stdout
-        if (HRUActorConfig.find("printOutput") != HRUActorConfig.end()) {
-            self->state.printOutput = HRUActorConfig["printOutput"];
-        } else {
-            aout(self) << "Error finding printOutput in JSON File - Reverting to default value\n";
-            self->state.printOutput = true;
-        }
-
-        if (self->state.printOutput) {
-            // get the frequency in number of timesteps we want to print the output
-            if(HRUActorConfig.find("outputFrequency") != HRUActorConfig.end()) {
-                self->state.outputFrequency = HRUActorConfig["outputFrequency"];
-            } else {
-                aout(self) << "Error finding outputFrequency in JSON File - Reverting to default value\n";
-                self->state.outputFrequency = 10000;
-            }
-        }
-    } else {
-        aout(self) << "Error finding HRUActor in JSON File - Reverting to default values for HRUs\n";
-        self->state.printOutput = true;
-        self->state.outputFrequency = 10000;
-    }
 
 
-}
-
 void Initialize_HRU(stateful_actor<hru_state>* self) {
-    self->state.initStart = std::chrono::high_resolution_clock::now();
-    // aout(self) << "Initalizing HRU" << std::endl;
-    // aout(self) << "Entering Initalize \n"; 
-    Initialize(&self->state.indxGRU,
+    self->state.hru_timing.updateStartPoint("init_duration");
+    
+    summaActors_initialize(&self->state.indxGRU,
             &self->state.num_steps, 
             self->state.handle_forcStat, 
             self->state.handle_progStat, 
@@ -219,7 +176,9 @@ void Initialize_HRU(stateful_actor<hru_state>* self) {
             self->state.handle_startTime, 
             self->state.handle_finshTime, 
             self->state.handle_refTime,
-            self->state.handle_oldTime, &self->state.err);
+            self->state.handle_oldTime, 
+            &self->state.err);
+
 
     if (self->state.err != 0) {
         aout(self) << "Error: Initialize - HRU = " << self->state.indxHRU << 
@@ -247,7 +206,6 @@ void Initialize_HRU(stateful_actor<hru_state>* self) {
         self->quit();
         return;
     }
-    // aout(self) << "Restart" << std::endl;
             
     Restart(&self->state.indxGRU, 
             &self->state.indxHRU, 
@@ -265,16 +223,15 @@ void Initialize_HRU(stateful_actor<hru_state>* self) {
         return;
     }
             
-    // aout(self) << self->state.refGRU << " - Done Init" << std::endl;
-    self->state.initEnd = std::chrono::high_resolution_clock::now();
-    self->state.initDuration = calculateTime(self->state.initStart, self->state.initEnd);
+    self->state.hru_timing.updateEndPoint("init_duration");
 }
 
 int Run_HRU(stateful_actor<hru_state>* self) {
     /**********************************************************************
     ** READ FORCING
     **********************************************************************/    
-    self->state.forcingStart = std::chrono::high_resolution_clock::now();
+    self->state.hru_timing.updateStartPoint("forcing_duration");
+
     Forcing(&self->state.indxGRU,
         &self->state.timestep,
         self->state.handle_timeStruct,
@@ -292,9 +249,7 @@ int Run_HRU(stateful_actor<hru_state>* self) {
         return 10;
 
     }
-    self->state.forcingEnd = std::chrono::high_resolution_clock::now();
-    self->state.forcingDuration += calculateTime(self->state.forcingStart, self->state.forcingEnd);
-
+    self->state.hru_timing.updateEndPoint("forcing_duration");
 
     if (self->state.printOutput && 
         self->state.timestep % self->state.outputFrequency == 0) {
@@ -305,7 +260,8 @@ int Run_HRU(stateful_actor<hru_state>* self) {
     /**********************************************************************
     ** RUN_PHYSICS    
     **********************************************************************/    
-    self->state.runPhysicsStart = std::chrono::high_resolution_clock::now();
+    self->state.hru_timing.updateStartPoint("run_physics_duration");
+
     self->state.err = 0;
     RunPhysics(&self->state.indxHRU,
         &self->state.timestep,
@@ -332,13 +288,9 @@ int Run_HRU(stateful_actor<hru_state>* self) {
             " - Timestep = " << self->state.timestep << std::endl;
         return 20;
     }
-    self->state.runPhysicsEnd = std::chrono::high_resolution_clock::now();
-    self->state.runPhysicsDuration += calculateTime(self->state.runPhysicsStart, self->state.runPhysicsEnd);
+    self->state.hru_timing.updateEndPoint("run_physics_duration");
 
-    /**********************************************************************
-    ** WRITE_OUTPUT  
-    **********************************************************************/
-    self->state.writeOutputStart = std::chrono::high_resolution_clock::now();
+    self->state.hru_timing.updateStartPoint("write_output_duration");
     WriteOutput(&self->state.indxHRU,
             &self->state.indxGRU,
             &self->state.timestep,
@@ -373,8 +325,7 @@ int Run_HRU(stateful_actor<hru_state>* self) {
             " - Timestep = " << self->state.timestep << std::endl;
         return 30;
     }
-    self->state.writeOutputEnd = std::chrono::high_resolution_clock::now();
-    self->state.writeOutputDuration += calculateTime(self->state.writeOutputStart, self->state.writeOutputEnd);
+    self->state.hru_timing.updateEndPoint("write_output_duration");
 
     return 0;      
 }
@@ -391,19 +342,11 @@ bool check_HRU(stateful_actor<hru_state>* self, int err) {
     } else if (self->state.timestep > self->state.num_steps) {
         // check if simulation is finished
         self->state.outputStep -= 1; // prevents segfault
-
-        if (debug)
-            aout(self) << "Sending Final Write" << 
-                "forcingStep = " << self->state.forcingStep << "\n" << 
-                "stepsInCurrentFFile = " << self->state.stepsInCurrentFFile << "\n" <<
-                "timeStep = " << self->state.timestep << "\n" << 
-                "outputStep = " << self->state.outputStep << "\n";
         
         self->send(self->state.file_access_actor, write_output_v, 
             self->state.indxGRU, self->state.indxHRU, self->state.outputStep, self);
 
-        self->state.end = std::chrono::high_resolution_clock::now();
-        self->state.duration += calculateTime(self->state.start, self->state.end);
+        self->state.hru_timing.updateEndPoint("total_duration");
 
         return false;
 
@@ -412,14 +355,6 @@ bool check_HRU(stateful_actor<hru_state>* self, int err) {
         // Special case where we need both reading and writing
         self->state.outputStep -= 1; // prevents segfault
 
-        if (debug)
-            aout(self) << "Need to read forcing and write to outputstruc\n" << 
-                "forcingStep = " << self->state.forcingStep << "\n" << 
-                "stepsInCurrentFFile = " << self->state.stepsInCurrentFFile << "\n" <<
-                "timeStep = " << self->state.timestep << "\n" << 
-                "outputStep = " << self->state.outputStep << "\n";
-        
-
         self->send(self->state.file_access_actor, read_and_write_v, self->state.indxGRU, 
             self->state.indxHRU, self->state.outputStep, self->state.iFile + 1, self);
         self->state.outputStep = 1;
@@ -429,14 +364,6 @@ bool check_HRU(stateful_actor<hru_state>* self, int err) {
     } else if (self->state.outputStep > self->state.outputStrucSize) {
         // check if we need to clear the output struc
         self->state.outputStep -= 1;
-
-        if (debug)
-            aout(self) << "Sending Write \n" << 
-                "forcingStep = " << self->state.forcingStep << "\n" << 
-                "stepsInCurrentFFile = " << self->state.stepsInCurrentFFile << "\n" <<
-                "timeStep = " << self->state.timestep << "\n" << 
-                "outputStep = " << self->state.outputStep << "\n";
-        
         
         self->send(self->state.file_access_actor, write_output_v, 
             self->state.indxGRU, self->state.indxHRU, self->state.outputStep, self);
@@ -446,14 +373,6 @@ bool check_HRU(stateful_actor<hru_state>* self, int err) {
 
     } else if (self->state.forcingStep > self->state.stepsInCurrentFFile) {
         // we need more forcing data
-
-        if (debug)
-            aout(self) << "Asking for more forcing data\n" << 
-                "forcingStep = " << self->state.forcingStep << "\n" << 
-                "stepsInCurrentFFile = " << self->state.stepsInCurrentFFile << "\n" <<
-                "timeStep = " << self->state.timestep << "\n" << 
-                "outputStep = " << self->state.outputStep << "\n";
-        
         self->send(self->state.file_access_actor, access_forcing_v, self->state.iFile + 1, self);
 
         return false;
@@ -498,7 +417,6 @@ void deallocateHRUStructures(stateful_actor<hru_state>* self) {
 
 void printOutput(stateful_actor<hru_state>* self) {
         aout(self) << self->state.refGRU << " - Timestep = " << self->state.timestep << std::endl;
-        aout(self) << self->state.refGRU << ":Accumulated Run Physics Time = " << 
-        self->state.runPhysicsDuration << std::endl;
 }
-#endif
\ No newline at end of file
+
+}
\ No newline at end of file
diff --git a/build/source/actors/job_actor/GRUinfo.cpp b/build/source/actors/job_actor/GRUinfo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c23be65df8ae5bb62641060e08bcae7928195e29
--- /dev/null
+++ b/build/source/actors/job_actor/GRUinfo.cpp
@@ -0,0 +1,113 @@
+#include "caf/all.hpp"
+#include "GRUinfo.hpp"
+#include <iostream>
+#include <fstream>
+
+
+GRUinfo::GRUinfo(int refGRU, int indxGRU, caf::actor gru, int dt_init, int maxAttempts) {
+  this->refGRU = refGRU;
+  this->indxGRU = indxGRU;
+  this->GRU = gru;
+  this->dt_init = dt_init;
+  this->currentAttempt = 1;
+  this->maxAttempts = maxAttempts;
+  this->completed = false;
+  this->failed = false;
+}
+GRUinfo::~GRUinfo(){};
+
+// Getters
+int GRUinfo::getRefGRU() {
+  return this->refGRU;
+}
+
+int GRUinfo::getIndxGRU() {
+  return this->indxGRU;
+}
+
+int GRUinfo::getDt_init() {
+  return this->dt_init;
+}
+
+caf::actor GRUinfo::getActor() {
+  return GRU;
+}
+// Setters
+void GRUinfo::updateGRU(caf::actor gru) {
+  this->GRU = gru;
+}
+
+void GRUinfo::updateFailed() {
+  if (this->failed) {
+    this->failed = false;
+  } else {
+    this->failed = true;
+  }
+}
+
+void GRUinfo::updateCompletedToTrue(){
+  this->completed = true;
+}
+
+void GRUinfo::updateDt_init() {
+  this->dt_init = this->dt_init * 2;
+}
+
+void GRUinfo::updateCurrentAttempt() {
+  this->currentAttempt++;
+}
+
+// Methods that return Booleans
+bool GRUinfo::isMaxAttemptsReached() {
+  return this->maxAttempts <= this->currentAttempt;
+}
+
+bool GRUinfo::isFailed() {
+  return this->failed;
+}
+
+bool GRUinfo::isCompleted() {
+  return this->completed;
+}
+
+void GRUinfo::doneRun(double runTime, double initDuration, double forcingDuration,
+  double runPhysicsDuration, double writeOutputDuration) {
+    this->runTime = runTime;
+    this->initDuration = initDuration;
+    this->forcingDuration = forcingDuration;
+    this->runPhysicsDuration = runPhysicsDuration;
+    this->writeOutputDuration = writeOutputDuration;
+}
+
+// Methods for writing statistics to a file
+void GRUinfo::writeSuccess(std::string fileName) {
+  std::ofstream file;
+  file.open(fileName, std::ios_base::app);
+  file << this->refGRU << "," 
+        << this->runTime << "," 
+        << this->initDuration << "," 
+        << this->forcingDuration << "," 
+        << this->runPhysicsDuration << "," 
+        << this->writeOutputDuration << "," 
+        << this->dt_init << "," 
+        << this->currentAttempt << "\n";
+  file.close();
+}
+
+void GRUinfo::writeFail(std::string fileName) {
+  std::ofstream file;
+  file.open(fileName, std::ios_base::app);
+  file << this->refGRU << ","
+        << this->dt_init << ","
+        << this->currentAttempt << "\n";
+  file.close();
+}
+
+void GRUinfo::printOutput() {
+  std::cout << "\nGRU = " << this->refGRU << "\n" <<
+    "RunTime = " << this->runTime << "\n" << 
+    "initDuration = " << this->initDuration << "\n" << 
+    "forcingDuration = " << this->forcingDuration << "\n" <<
+    "runPhysicsDuration = " << this->runPhysicsDuration << "\n" << 
+    "writeOutputDuration = " << this->writeOutputDuration << "\n\n"; 
+}
\ No newline at end of file
diff --git a/build/source/actors/job_actor/GRUinfo.h b/build/source/actors/job_actor/GRUinfo.h
deleted file mode 100644
index 51153f0d28afdf9a59dea6927744cccc5d03c88f..0000000000000000000000000000000000000000
--- a/build/source/actors/job_actor/GRUinfo.h
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifndef GRUinfo_H_
-#define GRUinfo_H_
-
-#include "caf/all.hpp"
-#include <iostream>
-#include <fstream>
-#include "Job.h"
-
-
-class GRUinfo {
-  private:
-    int refGRU; // This will be the same as the refGRU
-    int indxGRU;
-    caf::actor GRU;
-
-    // Variable to update
-    int dt_init;
-
-    // Completed Information
-    int currentAttempt;
-    int maxAttempts;
-    bool completed;
-    bool failed;
-
-    // Timing information for the GRU
-    double runTime;
-    double initDuration;
-    double forcingDuration;
-    double runPhysicsDuration;
-    double writeOutputDuration;
-
-  public:
-    // Constructor
-    GRUinfo(int refGRU, int indxGRU, caf::actor gru, int dt_init, int maxAttempts) {
-      this->refGRU = refGRU;
-      this->indxGRU = indxGRU;
-      this->GRU = gru;
-      this->dt_init = dt_init;
-      this->currentAttempt = 1;
-      this->maxAttempts = maxAttempts;
-      this->completed = false;
-      this->failed = false;
-    }
-    // Deconstructor
-    ~GRUinfo(){};
-    
-    // Getters
-    int getRefGRU() {
-      return this->refGRU;
-    }
-
-    int getIndxGRU() {
-      return this->indxGRU;
-    }
-
-    int getDt_init() {
-      return this->dt_init;
-    }
-
-    caf::actor getActor() {
-      return GRU;
-    }
-    // Setters
-    void updateGRU(caf::actor gru) {
-      this->GRU = gru;
-    }
-
-    void updateFailed() {
-      if (this->failed) {
-        this->failed = false;
-      } else {
-        this->failed = true;
-      }
-    }
-
-    void updateCompletedToTrue(){
-      this->completed = true;
-    }
-
-    void updateDt_init() {
-      this->dt_init = this->dt_init * 2;
-    }
-
-    void updateCurrentAttempt() {
-      this->currentAttempt++;
-    }
-
-    // Methods that return Booleans
-    bool isMaxAttemptsReached() {
-      return this->maxAttempts <= this->currentAttempt;
-    }
-
-    bool isFailed() {
-      return this->failed;
-    }
-
-    bool isCompleted() {
-      return this->completed;
-    }
-
-    void doneRun(double runTime, double initDuration, double forcingDuration,
-      double runPhysicsDuration, double writeOutputDuration) {
-        this->runTime = runTime;
-        this->initDuration = initDuration;
-        this->forcingDuration = forcingDuration;
-        this->runPhysicsDuration = runPhysicsDuration;
-        this->writeOutputDuration = writeOutputDuration;
-    }
-
-    // Methods for writing statistics to a file
-    void writeSuccess(std::string fileName) {
-      std::ofstream file;
-      file.open(fileName, std::ios_base::app);
-      file << this->refGRU << "," 
-           << this->runTime << "," 
-           << this->initDuration << "," 
-           << this->forcingDuration << "," 
-           << this->runPhysicsDuration << "," 
-           << this->writeOutputDuration << "," 
-           << this->dt_init << "," 
-           << this->currentAttempt << "\n";
-      file.close();
-    }
-
-    void writeFail(std::string fileName) {
-      std::ofstream file;
-      file.open(fileName, std::ios_base::app);
-      file << this->refGRU << ","
-           << this->dt_init << ","
-           << this->currentAttempt << "\n";
-      file.close();
-    }
-
-    void printOutput() {
-      std::cout << "\nGRU = " << this->refGRU << "\n" <<
-        "RunTime = " << this->runTime << "\n" << 
-        "initDuration = " << this->initDuration << "\n" << 
-        "forcingDuration = " << this->forcingDuration << "\n" <<
-        "runPhysicsDuration = " << this->runPhysicsDuration << "\n" << 
-        "writeOutputDuration = " << this->writeOutputDuration << "\n\n"; 
-    }
-
-
-
-};
-#endif
\ No newline at end of file
diff --git a/build/source/actors/job_actor/JobActor.h b/build/source/actors/job_actor/job_actor.cpp
similarity index 56%
rename from build/source/actors/job_actor/JobActor.h
rename to build/source/actors/job_actor/job_actor.cpp
index 890bfde6b0621022a0118d5d7d750c6f2fdd731b..1fb5f5e1f0760b9cc140fd2168c0011a66731104 100644
--- a/build/source/actors/job_actor/JobActor.h
+++ b/build/source/actors/job_actor/job_actor.cpp
@@ -1,11 +1,17 @@
-#ifndef SUMMACLIENTACTOR_H_
-#define SUMMACLIENTACTOR_H_
+#include "job_actor.hpp"
+#include "file_access_actor.hpp"
+#include "json.hpp"
+#include <chrono>
+#include <thread>
+#include "message_atoms.hpp"
+#include "global.hpp"
+#include "job_actor_subroutine_wrappers.hpp"
+#include "hru_actor.hpp"
 
-#include "Job.h"
-
-using namespace caf;
 using json = nlohmann::json;
 
+namespace caf {
+
 /**
  * @brief First Actor that is spawned that is not the Coordinator Actor.
  * 
@@ -14,7 +20,12 @@ using json = nlohmann::json;
  */
 behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU, 
     std::string configPath, int outputStrucSize, caf::actor parent) {
-    self->state.start = std::chrono::high_resolution_clock::now();
+    // Timinig Information
+    self->state.job_timing = TimingInfo();
+    self->state.job_timing.addTimePoint("total_duration");
+    self->state.job_timing.updateStartPoint("total_duration");
+
+
     // Set Job Variables
     self->state.startGRU = startGRU;
     self->state.numGRU = numGRU;
@@ -22,17 +33,26 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
     self->state.parent = parent;
     self->state.outputStrucSize = outputStrucSize;
 
-    if (parseSettings(self, configPath) == -1) {
-        aout(self) << "ERROR WITH JSON SETTINGS FILE!!!\n";
-        self->quit();
-    } else {
-        aout(self) << "\nSETTINGS FOR JOB_ACTOR\n" << 
-        "File Manager Path = " << self->state.fileManager << "\n" <<
-        "outputCSV = " << self->state.outputCSV << "\n";
-        if (self->state.outputCSV) {
-            aout(self) << "csvPath = " << self->state.csvPath << "\n";
+    // Get All Settings
+    self->state.fileManager = getSettings(self->state.configPath, "JobActor", "FileManagerPath", 
+        self->state.fileManager).value_or("");
+    self->state.outputCSV = getSettings(self->state.configPath, "JobActor", "outputCSV",
+        self->state.outputCSV).value_or(false);
+    if (self->state.outputCSV) {
+        self->state.csvPath = getSettings(self->state.configPath, "JobActor", "csvPath",
+        self->state.csvPath).value_or("");
+        if (self->state.csvPath == ""){ // check if we found the value if not set outputCSV to false
+            self->state.outputCSV = false;
         }
     }
+    
+    // Print Settings
+    aout(self) << "\nSETTINGS FOR JOB_ACTOR\n" << 
+    "File Manager Path = " << self->state.fileManager << "\n" <<
+    "outputCSV = " << self->state.outputCSV << "\n";
+    if (self->state.outputCSV) {
+        aout(self) << "csvPath = " << self->state.csvPath << "\n";
+    }
 
     // Initalize global variables
     initJob(self);
@@ -45,20 +65,11 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
     aout(self) << "Job Actor Initalized \n";
 
     return {
-    // *******************************************************************************************
-    // *********************************** INTERFACE WITH HRU ************************************
-    // *******************************************************************************************
-        
-        /**
-         * 
-         */
+
         [=](init_hru) {
             initalizeGRU(self);
         },
 
-        /**
-         * 
-         */
         [=](done_init_hru) {
             if (debug) {
                 aout(self) << "Done Init\n";
@@ -74,17 +85,16 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
+        [=](done_hru, int indx_gru, double total_duration, double init_duration, 
+            double forcing_duration, double run_physics_duration, double write_output_duration) {
+            aout(self) << "\nDone - GRU:" << self->state.GRUList[indx_gru - 1]->getRefGRU()
+                << " - IndexInJob = " << indx_gru << "\n";
 
-        [=](done_hru, int indxGRU, double totalDuration, double initDuration, 
-            double forcingDuration, double runPhysicsDuration, double writeOutputDuration) {
-            aout(self) << "GRU:" << self->state.GRUList[indxGRU - 1]->getRefGRU()
-                << "indxGRU = " << indxGRU << "Done \n";
-
-            self->state.GRUList[indxGRU - 1]->doneRun(totalDuration, initDuration, forcingDuration,
-                runPhysicsDuration, writeOutputDuration);
+            self->state.GRUList[indx_gru - 1]->doneRun(total_duration, init_duration, forcing_duration,
+                run_physics_duration, write_output_duration);
             
             if (self->state.outputCSV) {
-                self->state.GRUList[indxGRU - 1]->writeSuccess(self->state.successOutputFile);            
+                self->state.GRUList[indx_gru - 1]->writeSuccess(self->state.successOutputFile);            
             }
             
             self->state.numGRUDone++;
@@ -101,7 +111,6 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
-
         [=](run_failure, caf::actor actorRef, int indxGRU, int err) {
             aout(self) << "GRU:" << self->state.GRUList[indxGRU - 1]->getRefGRU()
                 << "indxGRU = " << indxGRU << "Failed \n"
@@ -120,25 +129,12 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             }
         },
 
-    // *******************************************************************************************
-    // ******************************* END INTERFACE WITH HRU ************************************
-    // *******************************************************************************************
-
-    // *******************************************************************************************
-    // ****************************** INTERFACE WITH FileAccessActor *****************************
-    // *******************************************************************************************
-        /**
-         * 
-         */
         [=](done_file_access_actor_init) {
             // Init GRU Actors and the Output Structure
-            // self->send(self->state.file_access_actor, initalize_outputStructure_v);
             self->send(self, init_hru_v);
         },
 
-
-
-        [=](file_access_actor_done, double readDuration, double writeDuration) {
+        [=](file_access_actor_done, double read_duration, double write_duration) {
             int err = 0;
             if (debug) {
                 aout(self) << "\n********************************\n";
@@ -156,31 +152,37 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
             self->state.GRUList.clear();
 
 
-            self->state.end = std::chrono::high_resolution_clock::now();
-            self->state.duration = calculateTime(self->state.start, self->state.end);
-
-            self->state.duration = self->state.duration / 1000; // Convert to milliseconds
+            self->state.job_timing.updateEndPoint("total_duration");
 
-            aout(self) << "\nTotal Job Duration:\n";
-            aout(self) << "     " << self->state.duration / 1000  << " Seconds\n";
-            aout(self) << "     " << (self->state.duration / 1000) / 60  << " Minutes\n";
-            aout(self) << "     " << ((self->state.duration / 1000) / 60) / 60 << " Hours\n";
-            aout(self) << "\nReading Duration:\n";
-            aout(self) << "     " << readDuration  << " Seconds\n";
-            aout(self) << "\nWriting Duration:\n";
-            aout(self) << "     " << writeDuration << " Seconds\n\n";
+            aout(self) << "\n________________PRINTING JOB_ACTOR TIMING INFO RESULTS________________\n";
+            aout(self) << "Total Duration = " << self->state.job_timing.getDuration("total_duration").value_or(-1.0) << " Seconds\n";
+            aout(self) << "Total Duration = " << self->state.job_timing.getDuration("total_duration").value_or(-1.0) / 60 << " Minutes\n";
+            aout(self) << "Total Duration = " << (self->state.job_timing.getDuration("total_duration").value_or(-1.0) / 60) / 60 << " Hours\n\n";
 
             cleanUpJobActor(&err);
             // Tell Parent we are done
-            self->send(self->state.parent, done_job_v, self->state.numGRUFailed);
+            self->send(self->state.parent, 
+                    done_job_v, 
+                    self->state.numGRUFailed, 
+                    self->state.job_timing.getDuration("total_duration").value_or(-1.0),
+                    read_duration, write_duration);
             self->quit();
         },
 
         [=](file_access_actor_err, std::string function) {
-            aout(self) << "Failure in File Access Actor in function" << function << "\n";
-            aout(self) << "Letting Parent Know we are quitting\n";
-            self->send(self->state.parent, err_v);
-            self->quit();
+            aout(self) << "Failure in File Access Actor in function: " << function << "\n";
+            if (function == "def_output") {
+                aout(self) << "Error with the output file, will try creating it agian\n";
+                std::this_thread::sleep_for(std::chrono::seconds(5));
+                self->state.file_access_actor = self->spawn(file_access_actor, self->state.startGRU, self->state.numGRU, 
+                    self->state.outputStrucSize, self->state.configPath, self);
+            } else {
+                aout(self) << "Letting Parent Know we are quitting\n";
+                self->send(self->state.parent, err_v);
+                self->quit();
+            }
+
+
         }
     // *******************************************************************************************
     // ************************** END INTERFACE WITH FileAccessActor *****************************
@@ -189,49 +191,6 @@ behavior job_actor(stateful_actor<job_state>* self, int startGRU, int numGRU,
     };
 }
 
-
-int parseSettings(stateful_actor<job_state>* self, std::string configPath) {
-    json settings;
-    std::string SummaActorsSettigs = "/Summa_Actors_Settings.json";
-	std::ifstream settings_file(configPath + SummaActorsSettigs);
-	settings_file >> settings;
-	settings_file.close();
-    
-    if (settings.find("JobActor") != settings.end()) {
-        json JobActorConfig = settings["JobActor"];
-        // Find the File Manager Path
-        if (JobActorConfig.find("FileManagerPath") !=  JobActorConfig.end()) {
-            self->state.fileManager = JobActorConfig["FileManagerPath"];
-        } else {
-            aout(self) << "Error Finding FileManagerPath - Exiting as this is needed\n";
-            return -1;
-        }
-
-        // Find if we want to outputCSV
-        if (JobActorConfig.find("outputCSV") !=  JobActorConfig.end()) {
-            self->state.outputCSV = JobActorConfig["outputCSV"];
-        } else {
-            aout(self) << "Error Finding outputCSV in JSON file - Reverting to Default Value\n";
-            self->state.outputCSV = false;
-        }
-
-        // Output Path of CSV
-        if (self->state.outputCSV) {
-            if (JobActorConfig.find("csvPath") !=  JobActorConfig.end()) {
-                self->state.csvPath = JobActorConfig["csvPath"];
-            } else {
-                aout(self) << "Error Finding csvPath in JSON file = Reverting to Default Value \n";
-                self->state.outputCSV = false; // we just choose not to output a csv
-            }
-        }
-
-        return 0;
-    } else {
-        aout(self) << "Error Finding JobActor in JSON file - Exiting as there is no path for the fileManger\n";
-        return -1;
-    }
-}
-
 void initJob(stateful_actor<job_state>* self) {
     std::string success = "Success"; // allows us to build the string
     if (self->state.outputCSV) {
@@ -239,13 +198,18 @@ void initJob(stateful_actor<job_state>* self) {
         self->state.successOutputFile = self->state.csvPath += success += 
             std::to_string(self->state.startGRU) += ".csv";
         file.open(self->state.successOutputFile, std::ios_base::out);
-        file << "GRU" << "," << "totalDuration" << "," << "initDuration" << "," << 
-                    "forcingDuration" << "," << "runPhysicsDuration" << "," << "writeOutputDuration" << 
-                    "," << "dt_init" << "," << "numAttemtps" << "\n";
+        file << 
+            "GRU,"                 << 
+            "totalDuration,"       <<
+            "initDuration,"        << 
+            "forcingDuration,"     << 
+            "runPhysicsDuration,"  << 
+            "writeOutputDuration," << 
+            "dt_init,"             << 
+            "numAttemtps\n";
         file.close();
     }
 
-
     int totalGRUs           = 0;
     int totalHRUs           = 0;
     int numHRUs             = 0;
@@ -305,6 +269,6 @@ void restartFailures(stateful_actor<job_state>* self) {
     }
 }
 
+} // End Namespace caf
 
 
-#endif
diff --git a/build/source/actors/main.cc b/build/source/actors/main.cc
deleted file mode 100644
index bb1f58afdf93be4aa85fc3f34ac2f43236fbdca6..0000000000000000000000000000000000000000
--- a/build/source/actors/main.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "caf/all.hpp"
-#include "caf/io/all.hpp"
-#include "summa_actor/SummaActor.h"
-#include "global/messageAtoms.h"
-#include "global/global.h"
-
-#include <string>
-#include <bits/stdc++.h>
-#include <unistd.h>
-#include <iostream>
-
-using namespace caf;
-
-/* Configuration class that handles the config and 
-/  command line options for the actors program */
-class config : public actor_system_config {
-    public:
-        int startGRU = -1;
-        int countGRU = -1;
-        std::string configPath = ""; // master file 
-        bool debugMode = false;
-    
-    config() {
-        opt_group{custom_options_, "global"}
-            .add(startGRU, "gru,g", "Starting GRU Index")
-            .add(countGRU, "numGRU,n", "Total Number of GRUs")
-            .add(configPath, "config,c", "Path name of the config directory")
-            .add(debugMode, "debug-mode,d", "enable debug mode");
-    }
-};
-
-void caf_main(actor_system& sys, const config& cfg) {
-    scoped_actor self{sys};
-    if (cfg.startGRU == -1) {
-        aout(self) << "Starting GRU was not defined!! " << 
-            "startGRU is set with the \"-g\" option\n";
-        aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
-        return;
-    }
-    if (cfg.countGRU == -1) {
-        aout(self) << "Number of GRUs was not defined!! " <<
-            "countGRU is set with the \"-n\" option\n";
-        aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
-        return;
-    }
-    if (cfg.configPath == "") {
-        aout(self) << "File Manager was not defined!! " << 
-            "fileManger is set with the \"-c\" option\n";
-        aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
-        return;
-    }
-    if (cfg.debugMode) {
-        aout(self) << "Starting SUMMA-Actors in DebugMode\n";
-        debug = true;
-    }
-    // start SUMMA
-    auto summa = sys.spawn(summa_actor, cfg.startGRU, cfg.countGRU, cfg.configPath);
-}
-
-CAF_MAIN(id_block::summa)
\ No newline at end of file
diff --git a/build/source/actors/main.cpp b/build/source/actors/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ab6583ad3e9c2a70d28aad0db507c7b643b1b177
--- /dev/null
+++ b/build/source/actors/main.cpp
@@ -0,0 +1,122 @@
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+#include "summa_actor.hpp"
+#include "summa_client.hpp"
+#include "summa_server.hpp"
+#include "global.hpp"
+#include "message_atoms.hpp"
+#include <string>
+#include <bits/stdc++.h>
+#include <unistd.h>
+#include <iostream>
+#include "json.hpp"
+#include "batch_manager.hpp"
+#include <optional>
+
+using namespace caf;
+
+
+/* Configuration class that handles the config and 
+/  command line options for the actors program */
+class config : public actor_system_config {
+    public:
+        int startGRU = -1;
+        int countGRU = -1;
+        std::string config_path = "";
+        bool debugMode = false;
+        bool server_mode = false;
+    
+    config() {
+        opt_group{custom_options_, "global"}
+            .add(startGRU, "gru,g", "Starting GRU Index")
+            .add(countGRU, "numGRU,n", "Total Number of GRUs")
+            .add(config_path, "config,c", "Path name of the config directory")
+            .add(debugMode, "debug-mode,b", "enable debug mode")
+            .add(server_mode, "server-mode,s", "enable server mode");
+    }
+};
+
+void run_client(actor_system& system, const config& cfg) {
+    scoped_actor self{system};
+    std::string host;
+    uint16_t port;
+
+    aout(self) << "Starting SUMMA-Client in Distributed Mode\n";
+    host = getSettings(cfg.config_path, "DistributedSettings", "host", host).value_or("");
+    port = getSettings(cfg.config_path, "DistributedSettings", "port", port).value_or(-1);
+    
+    if (host == "" || port == -1) {
+       aout(self) << "ERROR: run_client() host and port - CHECK SETTINGS FILE\n";
+       return;
+    }
+    std::optional<std::string> path = cfg.config_path;
+    auto c = system.spawn(summa_client, path);
+    if (!host.empty() && port > 0) {
+        anon_send(c, connect_atom_v, host, port);
+    } else {
+        aout(self) << "No Server Config" << std::endl;
+    }
+   
+}
+
+void run_server(actor_system& system, const config& cfg) {
+    scoped_actor self{system};
+    uint16_t port;
+
+    port = getSettings(cfg.config_path, "DistributedSettings", "port", port).value_or(-1);
+    if (port == -1) {
+        aout(self) << "ERROR: run_server() port - CHECK SETTINGS FILE\n";
+        return;
+    }
+    auto server = system.spawn(summa_server, cfg.config_path);
+    aout(self) << "Attempting to publish summa_server_actor on port " << port << std::endl;
+    auto is_port = io::publish(server, port);
+    if (!is_port) {
+        std::cerr << "********PUBLISH FAILED*******" << to_string(is_port.error()) << "\n";
+        return;
+    }
+    aout(self) << "Successfully Published summa_server_actor on port " << *is_port << "\n";
+}
+
+
+
+
+void caf_main(actor_system& sys, const config& cfg) {
+    scoped_actor self{sys};
+    std::string key_1 = "DistributedSettings";
+    std::string key_2 = "distributed-mode";
+    bool distributed_mode = false;
+
+    distributed_mode = getSettings(cfg.config_path, key_1, key_2, distributed_mode).value_or(false);
+    if (distributed_mode) {
+        // only command line arguments needed are config_path and server-mode
+        auto system = cfg.server_mode ? run_server : run_client;
+        system(sys, cfg);
+
+    } else {
+        // Configure command line arguments
+        if (cfg.startGRU == -1) {
+            aout(self) << "Starting GRU was not defined!! " << 
+                "startGRU is set with the \"-g\" option\n";
+            aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
+            return;
+        }
+        if (cfg.countGRU == -1) {
+            aout(self) << "Number of GRUs was not defined!! " <<
+                "countGRU is set with the \"-n\" option\n";
+            aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
+            return;
+        }
+        if (cfg.config_path == "") {
+            aout(self) << "File Manager was not defined!! " << 
+                "fileManger is set with the \"-c\" option\n";
+            aout(self) << "EXAMPLE: ./summaMain -g 1 -n 10 -c location/of/config \n";
+            return;
+        }
+
+        auto summa = sys.spawn(summa_actor, cfg.startGRU, cfg.countGRU, cfg.config_path, self);
+    }
+    
+}
+
+CAF_MAIN(id_block::summa, io::middleman)
diff --git a/build/source/actors/summa_actor/SummaActor.h b/build/source/actors/summa_actor/SummaActor.h
deleted file mode 100644
index 444bdc74ab2bc57ff13acd75a3baa91758c63c37..0000000000000000000000000000000000000000
--- a/build/source/actors/summa_actor/SummaActor.h
+++ /dev/null
@@ -1,120 +0,0 @@
-#ifndef SUMMAACTOR_H_ 
-#define SUMMAACTOR_H_
-
-#include "SummaManager.h"
-
-using namespace caf;
-using json = nlohmann::json;
-/**
- * Top Level Actor for Summa. This actor recieves the number of GRUs to compute from main and
- * divides them into jobs that compute one at a time.
- *
- * @param startGRU - starting GRU for the simulation 
- * @param numGRU - total number of GRUs to compute
- * @param configPath - location of file information for SUMMA
- * @return behavior 
- */
-behavior summa_actor(stateful_actor<summa_manager>* self, int startGRU, int numGRU, std::string configPath) {
- 	self->state.start = std::chrono::high_resolution_clock::now();
-	// Set Variables
-	self->state.startGRU = startGRU;
-	self->state.numGRU = numGRU;
-	self->state.configPath = configPath;
-
-	parseSettings(self, configPath);
-	aout(self) << "SETTINGS FOR SUMMA_ACTOR\n";
-	aout(self) << "Output Structure Size = " << self->state.outputStrucSize << "\n";
-	aout(self) << "Max GRUs Per Job = " << self->state.maxGRUPerJob << "\n";
-
-	// Create the job_actor and start SUMMA
-	spawnJob(self);
-
-	return {
-		[=](done_job, int numFailed) {
-			self->state.numFailed += numFailed;
-			aout(self) << "Job Done\n"; 
-			if (self->state.numGRU <= 0) {
-
-				self->state.end = std::chrono::high_resolution_clock::now();
-            	self->state.duration = calculateTime(self->state.start, self->state.end);
-				
-            	self->state.duration = self->state.duration / 1000; // Convert to milliseconds
-
-				
-				aout(self) << "Total Program Duration:\n";
-            	aout(self) << "     " << self->state.duration / 1000  << " Seconds\n";
-            	aout(self) << "     " << (self->state.duration / 1000) / 60  << " Minutes\n";
-            	aout(self) << "     " << ((self->state.duration / 1000) / 60) / 60 << " Hours\n";
-
-				aout(self) << "Program Finished \n";
-
-			} else {
-				// spawn a new job
-				spawnJob(self);
-			}
-		},
-
-		[=](err) {
-			aout(self) << "Unrecoverable Error: Attempting To Fail Gracefully\n";
-			self->quit();
-		}
-	};
-}
-
-
-void spawnJob(stateful_actor<summa_manager>* self) {
-	// Ensure we do not start a job with too many GRUs
-	if (self->state.numGRU > self->state.maxGRUPerJob) {
-		// spawn the job actor
-		aout(self) << "\n Starting Job with startGRU = " << self->state.startGRU << "\n";
-		self->state.currentJob = self->spawn(job_actor, self->state.startGRU, self->state.maxGRUPerJob, 
-			self->state.configPath, self->state.outputStrucSize, self);
-		
-		// Update GRU count
-		self->state.numGRU = self->state.numGRU - self->state.maxGRUPerJob;
-		self->state.startGRU = self->state.startGRU + self->state.maxGRUPerJob;
-
-	} else {
-
-		self->state.currentJob = self->spawn(job_actor, self->state.startGRU, self->state.numGRU, 
-			self->state.configPath, self->state.outputStrucSize, self);
-		self->state.numGRU = 0;
-	}
-}
-
-void parseSettings(stateful_actor<summa_manager>* self, std::string configPath) {
-	json settings;
-	std::string SummaActorsSettings = "/Summa_Actors_Settings.json";
-	std::ifstream settings_file(configPath + SummaActorsSettings);
-	settings_file >> settings;
-	settings_file.close();
-	
-	if (settings.find("SummaActor") != settings.end()) {
-		json SummaActorConfig = settings["SummaActor"];
-		
-		// Find the desired OutputStrucSize
-		if (SummaActorConfig.find("OuputStructureSize") != SummaActorConfig.end()) {
-			self->state.outputStrucSize = SummaActorConfig["OuputStructureSize"];
-		} else {
-			aout(self) << "Error Finding OutputStructureSize in JOSN - Reverting to default value\n";
-			self->state.outputStrucSize = 250;
-		}
-
-		// Find the desired maxGRUPerJob size
-		if (SummaActorConfig.find("maxGRUPerJob") != SummaActorConfig.end()) {
-			self->state.maxGRUPerJob = SummaActorConfig["maxGRUPerJob"];
-		} else {
-			aout(self) << "Error Finding maxGRUPerJob in JOSN - Reverting to default value\n";
-			self->state.maxGRUPerJob = 500;
-		}
-
-	} else {
-		aout(self) << "Error Finding SummaActor in JSON - Reverting to default values\n";
-		self->state.outputStrucSize = 250;
-		self->state.maxGRUPerJob = 500;
-	}
-}
-
-
-
-#endif
\ No newline at end of file
diff --git a/build/source/actors/summa_actor/SummaManager.h b/build/source/actors/summa_actor/SummaManager.h
deleted file mode 100644
index da875782b25c35ea1b589823d68a467a32321581..0000000000000000000000000000000000000000
--- a/build/source/actors/summa_actor/SummaManager.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef SUMMAMANGER_H_
-#define SUMMAMANGER_H_
-
-#include "caf/all.hpp"
-#include "caf/io/all.hpp"
-#include "../job_actor/JobActor.h"
-#include "../global/json.hpp"
-#include "../global/global.h"
-
-
-#include <iostream>
-#include <chrono>
-#include <string>
-#include <fstream>
-
-
-
-struct summa_manager {
-  // Timing Information
-  std::chrono::time_point<std::chrono::system_clock> start;
-  std::chrono::time_point<std::chrono::system_clock> end;
-  double duration;
-  // Program Parameters
-  int startGRU;           // starting GRU for the simulation
-  int numGRU;             // number of GRUs to compute
-  std::string configPath;// path to the fileManager.txt file
-  // Information about the jobs
-  int numFailed = 0;      // Number of jobs that have failed
-
-  // Values Set By Summa_Actors_Settings.json
-  int maxGRUPerJob; // maximum number of GRUs a job can compute at once
-  int outputStrucSize; 
-
-  caf::actor currentJob;  // Reference to the current job actor
-
-};
-
-/**
- * @brief Function to spawn a job actor
- */
-void spawnJob(stateful_actor<summa_manager>* self);
-
-void parseSettings(stateful_actor<summa_manager>* self, std::string configPath);
-#endif
\ No newline at end of file
diff --git a/build/source/actors/summa_actor/batch_manager.cpp b/build/source/actors/summa_actor/batch_manager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..85beab394bedbff8e9ce337cb670938afb87baf6
--- /dev/null
+++ b/build/source/actors/summa_actor/batch_manager.cpp
@@ -0,0 +1,68 @@
+#include "caf/all.hpp"
+#include <vector>
+#include "batch_manager.hpp"
+
+Batch::Batch(int batch_id, int start_hru, int num_hru) {
+    this->batch_id = batch_id;
+    this->start_hru = start_hru;
+    this->num_hru = num_hru;
+    this->status = unassigned;
+}
+
+
+
+void Batch::printBatchInfo() {
+    std::cout << "batch_id: " << this->batch_id << "\n";
+    std::cout << "start_hru: " << this->start_hru << "\n";
+    std::cout << "num_hru: " << this->num_hru << "\n";
+}
+
+batch_status Batch::getBatchStatus() {
+    return this->status;
+}
+
+int Batch::getBatchID() {
+    return this->batch_id;
+}
+
+int Batch::getStartHRU() {
+    return this->start_hru;
+}
+
+int Batch::getNumHRU() {
+    return this->num_hru;
+}
+
+void Batch::solvedBatch(double run_time, double read_time, double write_time) {
+    this->status = solved;
+    this->run_time = run_time;
+    this->read_time = read_time;
+    this->write_time = write_time;
+}
+
+void Batch::assignedBatch(std::string hostname, caf::actor actor_ref) {
+    this->status = assigned;
+    this->assigned_host = hostname;
+    this->assigned_actor = actor_ref;
+}
+
+void Batch::updateRunTime(double run_time) {
+    this->run_time = run_time;
+}
+
+void Batch::writeBatchToFile(std::string file_name) {
+    std::ofstream output_file;
+    output_file.open(file_name, std::ios_base::app);
+    output_file <<
+        this->batch_id      << "," <<
+        this->start_hru     << "," << 
+        this->num_hru       << "," << 
+        this->assigned_host << "," <<
+        this->run_time      << "," << 
+        this->read_time     << "," <<
+        this->write_time    << "," <<
+        this->status        << "\n";
+    output_file.close();
+}
+
+
diff --git a/build/source/actors/summa_actor/client.cpp b/build/source/actors/summa_actor/client.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bc5faa16663312972ee84117a4fedab95f7b6dea
--- /dev/null
+++ b/build/source/actors/summa_actor/client.cpp
@@ -0,0 +1,23 @@
+#include "caf/all.hpp"
+#include "client.hpp"
+
+
+Client::Client(int id, caf::actor client_actor, std::string hostname) {
+    this->id = id;
+    this->client_actor = client_actor;
+    this->hostname = hostname;
+    this->connected = true;
+}
+
+
+caf::actor Client::getActor() {
+    return this->client_actor;
+}
+
+int Client::getID() {
+    return this->id;
+}
+
+std::string Client::getHostname() {
+    return this->hostname;
+}
\ No newline at end of file
diff --git a/build/source/actors/summa_actor/summa_actor.cpp b/build/source/actors/summa_actor/summa_actor.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a62e5fb23f18f9822d4ceb8f13041cd32f848c4d
--- /dev/null
+++ b/build/source/actors/summa_actor/summa_actor.cpp
@@ -0,0 +1,112 @@
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+#include "message_atoms.hpp"
+#include "summa_actor.hpp"
+#include "global.hpp"
+#include "job_actor.hpp"
+#include "json.hpp"
+#include <iostream>
+#include <chrono>
+#include <string>
+#include <fstream>
+
+using json = nlohmann::json;
+
+namespace caf {
+
+behavior summa_actor(stateful_actor<summa_actor_state>* self, int startGRU, int numGRU, std::string configPath, actor parent) {
+ 	// Set Timing Variables
+	self->state.summa_actor_timing = TimingInfo();
+	self->state.summa_actor_timing.addTimePoint("total_duration");
+	self->state.summa_actor_timing.updateStartPoint("total_duration");
+	// Set Variables
+	self->state.startGRU = startGRU;
+	self->state.numGRU = numGRU;
+	self->state.configPath = configPath;
+	self->state.parent = parent;
+
+	self->state.outputStrucSize = getSettings(self->state.configPath, "SummaActor", "OuputStructureSize", 
+		self->state.outputStrucSize).value_or(250);
+	self->state.maxGRUPerJob = getSettings(self->state.configPath, "SummaActor", "maxGRUPerJob",
+		self->state.maxGRUPerJob).value_or(100);
+
+	aout(self) << "SETTINGS FOR SUMMA_ACTOR\n";
+	aout(self) << "Output Structure Size = " << self->state.outputStrucSize << "\n";
+	aout(self) << "Max GRUs Per Job = " << self->state.maxGRUPerJob << "\n";
+
+	// Create the job_actor and start SUMMA
+	spawnJob(self);
+
+	return {
+		[=](done_job, int numFailed, double job_duration, double read_duration, double write_duration) {
+			self->state.numFailed += numFailed;
+
+			self->state.timing_info_for_jobs.job_duration.push_back(job_duration);
+			self->state.timing_info_for_jobs.job_read_duration.push_back(read_duration);
+			self->state.timing_info_for_jobs.job_write_duration.push_back(write_duration);
+
+			if (self->state.numGRU <= 0) {
+				self->state.summa_actor_timing.updateEndPoint("total_duration");
+
+				for (std::vector<int>::size_type i = 0; i < self->state.timing_info_for_jobs.job_duration.size(); i++) {
+					aout(self) << "\n________________Job " << i + 1 << " Info_______________\n";
+					aout(self) << "Job Duration = " << self->state.timing_info_for_jobs.job_duration[i] << "\n";
+					aout(self) << "Job Read Duration = " << self->state.timing_info_for_jobs.job_read_duration[i] << "\n";
+					aout(self) << "Job Write Duration = " << self->state.timing_info_for_jobs.job_write_duration[i] << "\n";
+				}
+
+				// TODO: Output CSV file for finished jobs
+				
+				aout(self) << "\n________________SUMMA_ACTOR TIMING INFO________________\n";
+				aout(self) << "Total Duration = " << self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) << " Seconds\n";
+				aout(self) << "Total Duration = " << self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) / 60 << " Minutes\n";
+				aout(self) << "Total Duration = " << (self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0) / 60) / 60 << " Hours\n\n";
+				double total_read_duration = std::accumulate(self->state.timing_info_for_jobs.job_read_duration.begin(),
+																		self->state.timing_info_for_jobs.job_read_duration.end(),
+																		0.0);
+				aout(self) << "Total Read Duration = " << total_read_duration  << "Seconds \n";
+				double total_write_duration = std::accumulate(self->state.timing_info_for_jobs.job_write_duration.begin(),
+																		self->state.timing_info_for_jobs.job_write_duration.end(),
+																		0.0);
+				aout(self) << "Total Write Duration = " << total_write_duration << "Seconds \n";
+				aout(self) << "Program Finished \n";
+
+				self->send(self->state.parent, done_batch_v, 
+					self->state.summa_actor_timing.getDuration("total_duration").value_or(-1.0), 
+					total_read_duration,
+					total_write_duration);		
+
+			} else {
+				// spawn a new job
+				spawnJob(self);
+			}
+		},
+
+		[=](err) {
+			aout(self) << "Unrecoverable Error: Attempting To Fail Gracefully\n";
+			self->quit();
+		}
+	};
+}
+
+
+void spawnJob(stateful_actor<summa_actor_state>* self) {
+	// Ensure we do not start a job with too many GRUs
+	if (self->state.numGRU > self->state.maxGRUPerJob) {
+		// spawn the job actor
+		aout(self) << "\n Starting Job with startGRU = " << self->state.startGRU << "\n";
+		self->state.currentJob = self->spawn(job_actor, self->state.startGRU, self->state.maxGRUPerJob, 
+			self->state.configPath, self->state.outputStrucSize, self);
+		
+		// Update GRU count
+		self->state.numGRU = self->state.numGRU - self->state.maxGRUPerJob;
+		self->state.startGRU = self->state.startGRU + self->state.maxGRUPerJob;
+
+	} else {
+
+		self->state.currentJob = self->spawn(job_actor, self->state.startGRU, self->state.numGRU, 
+			self->state.configPath, self->state.outputStrucSize, self);
+		self->state.numGRU = 0;
+	}
+}
+} // end namespace
diff --git a/build/source/actors/summa_actor/summa_client.cpp b/build/source/actors/summa_actor/summa_client.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6df57bbda5862fa1cba05e5162169793a86ee813
--- /dev/null
+++ b/build/source/actors/summa_actor/summa_client.cpp
@@ -0,0 +1,110 @@
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+
+#include "summa_client.hpp"
+#include "summa_actor.hpp"
+#include "message_atoms.hpp"
+#include "batch_manager.hpp"
+#include <optional>
+#include <unistd.h>
+#include <limits.h>
+
+
+namespace caf {
+
+behavior summa_client(stateful_actor<summa_client_state>* self, std::optional<std::string> config_path) {
+    self->state.config_path = config_path;
+
+    self->set_down_handler([=](const down_msg& dm){
+        if(dm.source == self->state.current_server) {
+            aout(self) << "*** Lost Connection to Server" << std::endl;
+            self->state.current_server = nullptr;
+            self->become(unconnected(self));
+        }
+    });
+    return unconnected(self);
+}
+/**
+ * Attempt to connect to the server 
+ */
+behavior unconnected(stateful_actor<summa_client_state>* self) {
+    return {
+        [=] (connect_atom, const std::string& host, uint16_t port) {
+            connecting(self, host, port);
+        },
+    };
+}
+
+void connecting(stateful_actor<summa_client_state>* self, const std::string& host, uint16_t port) {
+    self->state.current_server = nullptr;
+
+    auto mm = self->system().middleman().actor_handle();
+    self->request(mm, infinite, connect_atom_v, host, port)
+        .await(
+            [=](const node_id&, strong_actor_ptr serv,
+                const std::set<std::string>& ifs) {
+                if (!serv) {
+                    aout(self) << R"(*** no server found at ")" << host << R"(":)" << port
+                     << std::endl;
+                    return;
+                }
+                if (!ifs.empty()) {
+                    aout(self) << R"(*** typed actor found at ")" << host << R"(":)"
+                        << port << ", but expected an untyped actor " << std::endl;
+                    return;
+                }
+                aout(self) << "*** successfully connected to server" << std::endl;
+                self->state.current_server = serv;
+                auto hdl = actor_cast<actor>(serv);
+                self->monitor(hdl);
+                self->become(running(self, hdl));
+                },
+            [=](const error& err) {
+                aout(self) << R"(*** cannot connect to ")" << host << R"(":)" << port
+                   << " => " << to_string(err) << std::endl;
+                self->become(unconnected(self));
+        });
+}
+
+behavior running(stateful_actor<summa_client_state>* self, const actor& server_actor) {
+    char host[HOST_NAME_MAX];
+    aout(self) << "Client Has Started Successfully" << std::endl;
+    gethostname(host, HOST_NAME_MAX);
+    self->state.hostname = host;
+
+    self->send(server_actor, connect_to_server_v, self, self->state.hostname);
+    return {
+        [=](batch, int client_id, int batch_id, int start_hru, int num_hru, std::string config_path) {
+            aout(self) << "\nReceived batch to compute" << "\n";
+            aout(self) << "BatchID = " << batch_id << "\n";
+            aout(self) << "Start HRU = " << start_hru << "\n";
+            aout(self) << "Num HRU = " << num_hru << "\n";
+            aout(self) << "Config Path = " << config_path << "\n";
+            self->state.client_id = client_id;
+            self->state.batch_id = batch_id;
+
+            
+            self->state.summa_actor_ref = self->spawn(summa_actor, 
+                start_hru, 
+                num_hru, 
+                self->state.config_path.value_or(config_path), 
+                self);
+            
+
+            
+        },
+
+        [=](done_batch, double total_duration, double total_read_duration, double total_write_duration) {
+            aout(self) << "summa_actor has finished, sending message to the server for another batch\n";
+            self->send(server_actor, done_batch_v, self, self->state.client_id, self->state.batch_id, 
+                total_duration, total_read_duration, total_write_duration);
+        },
+
+        [=](time_to_exit) {
+            aout(self) << "Client Exiting\n";
+            self->quit();
+        }
+        
+    };
+}
+}
\ No newline at end of file
diff --git a/build/source/actors/summa_actor/summa_server.cpp b/build/source/actors/summa_actor/summa_server.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..51c6d1c1e4cc41a84d0c6587fd1f73da55194c50
--- /dev/null
+++ b/build/source/actors/summa_actor/summa_server.cpp
@@ -0,0 +1,180 @@
+#include "caf/all.hpp"
+#include "caf/io/all.hpp"
+#include <string>
+#include "batch_manager.hpp"
+#include "summa_server.hpp"
+#include "message_atoms.hpp"
+#include "global.hpp"
+#include <optional>
+
+
+namespace caf {
+
+behavior summa_server(stateful_actor<summa_server_state>* self, std::string config_path) {
+    aout(self) << "Summa Server has Started \n";
+    self->state.config_path = config_path;
+    // std::string returnType;
+    // getSettingsTest(std::vector<std::string> {"test", "test2"} ,returnType);
+
+    // --------------------------Initalize Settings --------------------------
+    self->state.total_hru_count = getSettings(self->state.config_path, "SimulationSettings", "total_hru_count", 
+		self->state.total_hru_count).value_or(-1);
+    if (self->state.total_hru_count == -1) {
+        aout(self) << "ERROR: With total_hru_count - CHECK Summa_Actors_Settings.json\n";
+    }
+    self->state.num_hru_per_batch = getSettings(self->state.config_path, "SimulationSettings", "num_hru_per_batch", 
+		self->state.num_hru_per_batch).value_or(-1);
+    if (self->state.num_hru_per_batch == -1) {
+        aout(self) << "ERROR: With num_hru_per_batch - CHECK Summa_Actors_Settings.json\n";
+    }
+    // --------------------------Initalize Settings --------------------------
+
+    // -------------------------- Initalize CSV ------------------------------
+    std::ofstream csv_output;
+    self->state.csv_output_name = "Batch_Results.csv";
+    csv_output.open(self->state.csv_output_name, std::ios_base::out);
+    csv_output << 
+        "Batch_ID,"  <<
+        "Start_HRU," <<
+        "Num_HRU,"   << 
+        "Hostname,"  <<
+        "Run_Time,"  <<
+        "Read_Time," <<
+        "Write_Time,"<<
+        "Status\n";
+    csv_output.close();
+    // -------------------------- Initalize CSV ------------------------------
+
+    // -------------------------- Assemble Batches ---------------------------
+    aout(self) << "Assembling HRUs into Batches\n";
+    if (assembleBatches(self) == -1) {
+        aout(self) << "ERROR: assembleBatches\n";
+    } else {
+        aout(self) << "HRU Batches Assembled, Ready For Clients to Connect \n";
+
+        for (std::vector<int>::size_type i = 0; i < self->state.batch_list.size(); i++) {
+            self->state.batch_list[i].printBatchInfo();
+        }
+    }
+    // -------------------------- Assemble Batches ---------------------------
+
+    return {
+        [=](connect_to_server, actor client, std::string hostname) {
+            // Client is connecting - Add it to our client list and assign it a batch
+            aout(self) << "Actor trying to connect with hostname " << hostname << "\n";
+            int client_id = self->state.client_list.size(); // So we can lookup the client in O(1) time 
+            self->state.client_list.push_back(Client(client_id, client, hostname));
+
+            std::optional<int> batch_id = getUnsolvedBatchID(self);
+            if (batch_id.has_value()) {
+                // update the batch in the batch list with the host and actor_ref
+                self->state.batch_list[batch_id.value()].assignedBatch(self->state.client_list[client_id].getHostname(), client);
+                
+                int start_hru = self->state.batch_list[batch_id.value()].getStartHRU();
+                int num_hru = self->state.batch_list[batch_id.value()].getNumHRU();
+
+                self->send(client, 
+                    batch_v, 
+                    client_id, 
+                    batch_id.value(), 
+                    start_hru, 
+                    num_hru, 
+                    self->state.config_path);
+
+            } else {
+
+                aout(self) << "We Are Done - Telling Clients to exit \n";
+                for (std::vector<int>::size_type i = 0; i < self->state.client_list.size(); i++) {
+                    self->send(self->state.client_list[i].getActor(), time_to_exit_v);
+                }
+                self->quit();
+                return;
+            }
+        },
+
+        [=](done_batch, actor client, int client_id, int batch_id, double total_duration, 
+            double total_read_duration, double total_write_duration) {
+            
+            self->state.batch_list[batch_id].solvedBatch(total_duration, total_read_duration, total_write_duration);
+            self->state.batch_list[batch_id].writeBatchToFile(self->state.csv_output_name);
+            self->state.batches_solved++;
+            self->state.batches_remaining = self->state.batch_list.size() - self->state.batches_solved;
+
+            aout(self) << "\n****************************************\n";
+            aout(self) << "Client finished batch: " << batch_id << "\n";
+            aout(self) << "Client hostname = " << self->state.client_list[client_id].getHostname() << "\n";
+            aout(self) << "Total Batch Duration = " << total_duration << "\n";
+            aout(self) << "Total Batch Read Duration = " << total_read_duration << "\n";
+            aout(self) << "Total Batch Write Duration = " << total_write_duration << "\n";
+            aout(self) << "Batches Solved = " << self->state.batches_solved << "\n";
+            aout(self) << "Batches Remaining = " << self->state.batches_remaining << "\n";
+            aout(self) << "****************************************\n";
+
+            // Find a new batch
+            std::optional<int> new_batch_id = getUnsolvedBatchID(self);
+             if (new_batch_id.has_value()) {
+                // update the batch in the batch list with the host and actor_ref
+                self->state.batch_list[new_batch_id.value()].assignedBatch(self->state.client_list[client_id].getHostname(), client);
+            
+                int start_hru = self->state.batch_list[new_batch_id.value()].getStartHRU();
+                int num_hru = self->state.batch_list[new_batch_id.value()].getNumHRU();
+
+                self->send(client, 
+                    batch_v, 
+                    client_id, 
+                    new_batch_id.value(), 
+                    start_hru, 
+                    num_hru, 
+                    self->state.config_path);
+
+            } else {
+                // We found no batch this means all batches are assigned
+                if (self->state.batches_remaining == 0) {
+                    aout(self) << "All Batches Solved -- Telling Clients To Exit\n";
+                    for (std::vector<int>::size_type i = 0; i < self->state.client_list.size(); i++) {
+                        self->send(self->state.client_list[i].getActor(), time_to_exit_v);
+                    }
+                    aout(self) << "\nSUMMA_SERVER -- EXITING\n";
+                    self->quit();
+                } else {
+                    aout(self) << "No Batches left to compute -- letting client stay connected in case batch fails\n";
+                }
+            }
+        }
+    };
+}
+
+
+int assembleBatches(stateful_actor<summa_server_state>* self) {
+    int remaining_hru_to_batch = self->state.total_hru_count;
+    int count_index = 0; // this is like the offset for slurm bash scripts
+    int start_hru = 1;
+
+    while(remaining_hru_to_batch > 0) {
+        if (self->state.num_hru_per_batch > remaining_hru_to_batch) {
+            self->state.batch_list.push_back(Batch(count_index, start_hru, 
+                remaining_hru_to_batch));
+            remaining_hru_to_batch = 0;
+        } else {
+            self->state.batch_list.push_back(Batch(count_index, start_hru, 
+                self->state.num_hru_per_batch));
+            
+            remaining_hru_to_batch -= self->state.num_hru_per_batch;
+            start_hru += self->state.num_hru_per_batch;
+            count_index += 1;
+        }
+    }
+    return 0;
+}
+
+std::optional<int> getUnsolvedBatchID(stateful_actor<summa_server_state>* self) {
+    // Find the first unassigned batch
+    for (std::vector<int>::size_type i = 0; i < self->state.batch_list.size(); i++) {
+        if (self->state.batch_list[i].getBatchStatus() == unassigned) {
+            return i;
+        }
+    }
+    return {};
+}
+
+} // end namespace
diff --git a/build/source/driver/SummaActors_modelRun.f90 b/build/source/driver/SummaActors_modelRun.f90
index 7aaba25108d23c91e700bb7189f186651304cb49..3310197b9d4d11d891122068989d35fb0189b288 100755
--- a/build/source/driver/SummaActors_modelRun.f90
+++ b/build/source/driver/SummaActors_modelRun.f90
@@ -213,7 +213,9 @@ contains
  
  ! initialize runoff variables
   bvarStruct%var(iLookBVAR%basin__SurfaceRunoff)%dat(1)    = 0._dp  ! surface runoff (m s-1)
+  bvarStruct%var(iLookBVAR%basin__SoilDrainage)%dat(1)     = 0._dp 
   bvarStruct%var(iLookBVAR%basin__ColumnOutflow)%dat(1)    = 0._dp  ! outflow from all "outlet" HRUs (those with no downstream HRU)
+  bvarStruct%var(iLookBVAR%basin__TotalRunoff)%dat(1)    = 0._dp 
 
  ! initialize baseflow variables
   bvarStruct%var(iLookBVAR%basin__AquiferRecharge)%dat(1)  = 0._dp ! recharge to the aquifer (m s-1)
@@ -343,20 +345,28 @@ contains
            +  fluxStruct%var(iLookFLUX%scalarAquiferBaseflow)%dat(1) * fracHRU
   end if
 
+  ! perform the routing
+  associate(totalArea => bvarStruct%var(iLookBVAR%basin__totalArea)%dat(1) )
+
  ! compute water balance for the basin aquifer
  if(model_decisions(iLookDECISIONS%spatial_gw)%iDecision == singleBasin)then
   message=trim(message)//'multi_driver/bigBucket groundwater code not transferred from old code base yet'
   err=20; return
  end if
 
- ! perform the routing
- associate(totalArea => bvarStruct%var(iLookBVAR%basin__totalArea)%dat(1) )
+ ! calculate total runoff depending on whether aquifer is connected
+ if(model_decisions(iLookDECISIONS%groundwatr)%iDecision == bigBucket) then
+  ! aquifer
+  bvarStruct%var(iLookBVAR%basin__TotalRunoff)%dat(1) = bvarStruct%var(iLookBVAR%basin__SurfaceRunoff)%dat(1) + bvarStruct%var(iLookBVAR%basin__ColumnOutflow)%dat(1)/totalArea + bvarStruct%var(iLookBVAR%basin__AquiferBaseflow)%dat(1)
+ else
+  ! no aquifer
+  bvarStruct%var(iLookBVAR%basin__TotalRunoff)%dat(1) = bvarStruct%var(iLookBVAR%basin__SurfaceRunoff)%dat(1) + bvarStruct%var(iLookBVAR%basin__ColumnOutflow)%dat(1)/totalArea + bvarStruct%var(iLookBVAR%basin__SoilDrainage)%dat(1)
+ endif
+
  call qOverland(&
                 ! input
-                model_decisions(iLookDECISIONS%subRouting)%iDecision,          &  ! intent(in): index for routing method
-                bvarStruct%var(iLookBVAR%basin__SurfaceRunoff)%dat(1),           &  ! intent(in): surface runoff (m s-1)
-                bvarStruct%var(iLookBVAR%basin__ColumnOutflow)%dat(1)/totalArea, &  ! intent(in): outflow from all "outlet" HRUs (those with no downstream HRU)
-                bvarStruct%var(iLookBVAR%basin__AquiferBaseflow)%dat(1),         &  ! intent(in): baseflow from the aquifer (m s-1)
+                model_decisions(iLookDECISIONS%subRouting)%iDecision,            &  ! intent(in): index for routing method
+                bvarStruct%var(iLookBVAR%basin__TotalRunoff)%dat(1),            &  ! intent(in): total runoff to the channel from all active components (m s-1)
                 bvarStruct%var(iLookBVAR%routingFractionFuture)%dat,             &  ! intent(in): fraction of runoff in future time steps (m s-1)
                 bvarStruct%var(iLookBVAR%routingRunoffFuture)%dat,               &  ! intent(in): runoff in future time steps (m s-1)
                 ! output
diff --git a/build/source/driver/summaActors_init.f90 b/build/source/driver/summaActors_init.f90
index 99b6872843fd39c9640cf8d3145575e75432cb7c..c95de9daa4c37fd1eaa4fe1adc5378f7bea7de71 100755
--- a/build/source/driver/summaActors_init.f90
+++ b/build/source/driver/summaActors_init.f90
@@ -1,5 +1,6 @@
-module summa4chm_init
+module summaActors_init
 ! used to declare and allocate summa data structures and initialize model state to known values
+USE,intrinsic :: iso_c_binding
 USE nrtype          ! variable types, etc.
 USE data_types,only:&
                     ! no spatial dimension
@@ -33,44 +34,44 @@ USE var_lookup,only:maxVarFreq                               ! # of available ou
 ! safety: set private unless specified otherwise
 implicit none
 private
-public::summa4chm_initialize
+public::summaActors_initialize
 contains
 
  ! used to declare and allocate summa data structures and initialize model state to known values
- subroutine summa4chm_initialize(&
+ subroutine summaActors_initialize(&
                         indxGRU,            & !  Index of HRU's GRU parent
                         num_steps,          &
   						          ! statistics structures
-                        forcStat,           & !  model forcing data
-                        progStat,           & !  model prognostic (state) variables
-                        diagStat,           & !  model diagnostic variables
-                        fluxStat,           & !  model fluxes
-                        indxStat,           & !  model indices
-                        bvarStat,           & !  basin-average variables
+                        handle_forcStat,    & !  model forcing data
+                        handle_progStat,    & !  model prognostic (state) variables
+                        handle_diagStat,    & !  model diagnostic variables
+                        handle_fluxStat,    & !  model fluxes
+                        handle_indxStat,    & !  model indices
+                        handle_bvarStat,    & !  basin-average variables
                         ! primary data structures (scalars)
-                        timeStruct,         & !  model time data
-                        forcStruct,         & !  model forcing data
-                        attrStruct,         & !  local attributes for each HRU
-                        typeStruct,         & !  local classification of soil veg etc. for each HRU
-                        idStruct,           & ! 
+                        handle_timeStruct,  & !  model time data
+                        handle_forcStruct,  & !  model forcing data
+                        handle_attrStruct,  & !  local attributes for each HRU
+                        handle_typeStruct,  & !  local classification of soil veg etc. for each HRU
+                        handle_idStruct,    & ! 
                         ! primary data structures (variable length vectors)
-                        indxStruct,         & !  model indices
-                        mparStruct,         & !  model parameters
-                        progStruct,         & !  model prognostic (state) variables
-                        diagStruct,         & !  model diagnostic variables
-                        fluxStruct,         & !  model fluxes
+                        handle_indxStruct,  & !  model indices
+                        handle_mparStruct,  & !  model parameters
+                        handle_progStruct,  & !  model prognostic (state) variables
+                        handle_diagStruct,  & !  model diagnostic variables
+                        handle_fluxStruct,  & !  model fluxes
                         ! basin-average structures
-                        bparStruct,         & !  basin-average parameters
-                        bvarStruct,         & !  basin-average variables
+                        handle_bparStruct,  & !  basin-average parameters
+                        handle_bvarStruct,  & !  basin-average variables
                         ! ancillary data structures
-                        dparStruct,         & !  default model parameters
+                        handle_dparStruct,  & !  default model parameters
                         ! local HRU data structures
-                        startTime_hru,      & ! start time for the model simulation
-                        finishTime_hru,     & ! end time for the model simulation
-                        refTime_hru,        & ! reference time for the model simulation
-                        oldTime_hru,        & ! time from previous step
+                        handle_startTime,   & ! start time for the model simulation
+                        handle_finshTime,   & ! end time for the model simulation
+                        handle_refTime,     & ! reference time for the model simulation
+                        handle_oldTime,     & ! time for the previous model time step
                         ! miscellaneous variables
-                        err, message)
+                        err) bind(C,name='summaActors_initialize')
   ! ---------------------------------------------------------------------------------------
   ! * desired modules
   ! ---------------------------------------------------------------------------------------
@@ -91,51 +92,111 @@ contains
   USE globalData,only:numtim
   USE var_lookup,only:maxvarFreq                              ! maximum number of output files
   USE globalData,only:startTime,finshTime,refTime,oldTime
+  
+  implicit none
+  
   ! ---------------------------------------------------------------------------------------
-  ! * variables
+  ! * variables from C++
   ! ---------------------------------------------------------------------------------------
-  implicit none
-  ! dummy variables
-  integer(i4b),intent(in)                  :: indxGRU                    ! indx of the parent GRU
-  integer(i4b),intent(out)                 :: num_steps                  ! number of steps in model, local to the HRU                 
-  ! statistics structures            
-  type(var_dlength),intent(inout)          :: forcStat                   !  model forcing data
-  type(var_dlength),intent(inout)          :: progStat                   !  model prognostic (state) variables
-  type(var_dlength),intent(inout)          :: diagStat                   !  model diagnostic variables
-  type(var_dlength),intent(inout)          :: fluxStat                   !  model fluxes
-  type(var_dlength),intent(inout)          :: indxStat                   !  model indices
-  type(var_dlength),intent(inout)          :: bvarStat                   !  basin-average variabl
+  integer(c_int),intent(in)                  :: indxGRU                    ! indx of the parent GRU
+  integer(c_int),intent(out)                 :: num_steps                  ! number of steps in model, local to the HRU                 
+    ! statistics structures
+  type(c_ptr), intent(in), value             :: handle_forcStat !  model forcing data
+  type(c_ptr), intent(in), value             :: handle_progStat !  model prognostic (state) variables
+  type(c_ptr), intent(in), value             :: handle_diagStat !  model diagnostic variables
+  type(c_ptr), intent(in), value             :: handle_fluxStat !  model fluxes
+  type(c_ptr), intent(in), value             :: handle_indxStat !  model indices
+  type(c_ptr), intent(in), value             :: handle_bvarStat !  basin-average variables
   ! primary data structures (scalars)
-  type(var_i),intent(inout)                :: timeStruct                 !  model time data
-  type(var_d),intent(inout)                :: forcStruct                 !  model forcing data
-  type(var_d),intent(inout)                :: attrStruct                 !  local attributes for each HRU
-  type(var_i),intent(inout)                :: typeStruct                 !  local classification of soil veg etc. for each HRU
-  type(var_i8),intent(inout)               :: idStruct                   ! 
+  type(c_ptr), intent(in), value             :: handle_timeStruct !  model time data
+  type(c_ptr), intent(in), value             :: handle_forcStruct !  model forcing data
+  type(c_ptr), intent(in), value             :: handle_attrStruct !  local attributes for each HRU
+  type(c_ptr), intent(in), value             :: handle_typeStruct !  local classification of soil veg etc. for each HRU
+  type(c_ptr), intent(in), value             :: handle_idStruct ! 
   ! primary data structures (variable length vectors)
-  type(var_ilength),intent(inout)          :: indxStruct                 !  model indices
-  type(var_dlength),intent(inout)          :: mparStruct                 !  model parameters
-  type(var_dlength),intent(inout)          :: progStruct                 !  model prognostic (state) variables
-  type(var_dlength),intent(inout)          :: diagStruct                 !  model diagnostic variables
-  type(var_dlength),intent(inout)          :: fluxStruct                 !  model fluxes
+  type(c_ptr), intent(in), value             :: handle_indxStruct !  model indices
+  type(c_ptr), intent(in), value             :: handle_mparStruct !  model parameters
+  type(c_ptr), intent(in), value             :: handle_progStruct !  model prognostic (state) variables
+  type(c_ptr), intent(in), value             :: handle_diagStruct !  model diagnostic variables
+  type(c_ptr), intent(in), value             :: handle_fluxStruct !  model fluxes
   ! basin-average structures
-  type(var_d),intent(inout)                :: bparStruct                 !  basin-average parameters
-  type(var_dlength),intent(inout)          :: bvarStruct                 !  basin-average variables
+  type(c_ptr), intent(in), value             :: handle_bparStruct !  basin-average parameters
+  type(c_ptr), intent(in), value             :: handle_bvarStruct !  basin-average variables
   ! ancillary data structures
-  type(var_d),intent(inout)                :: dparStruct                 !  default model parameters
+  type(c_ptr), intent(in), value             :: handle_dparStruct !  default model parameters
+  ! local hru data structures
+  type(c_ptr), intent(in), value             :: handle_startTime  ! start time for the model simulation
+  type(c_ptr), intent(in), value             :: handle_finshTime ! end time for the model simulation
+  type(c_ptr), intent(in), value             :: handle_refTime    ! reference time for the model simulation
+  type(c_ptr), intent(in), value             :: handle_oldTime    ! time for the previous model time step 
+  integer(c_int),intent(inout)               :: err  
+  ! ---------------------------------------------------------------------------------------
+  ! * Fortran Variables For Conversion
+  ! ---------------------------------------------------------------------------------------
+  type(var_dlength),pointer                  :: forcStat                   !  model forcing data
+  type(var_dlength),pointer                  :: progStat                   !  model prognostic (state) variables
+  type(var_dlength),pointer                  :: diagStat                   !  model diagnostic variables
+  type(var_dlength),pointer                  :: fluxStat                   !  model fluxes
+  type(var_dlength),pointer                  :: indxStat                   !  model indices
+  type(var_dlength),pointer                  :: bvarStat                   !  basin-average variabl
+  ! primary data structures (scalars)
+  type(var_i),pointer                        :: timeStruct                 !  model time data
+  type(var_d),pointer                        :: forcStruct                 !  model forcing data
+  type(var_d),pointer                        :: attrStruct                 !  local attributes for each HRU
+  type(var_i),pointer                        :: typeStruct                 !  local classification of soil veg etc. for each HRU
+  type(var_i8),pointer                       :: idStruct                   ! 
+  ! primary data structures (variable length vectors)
+  type(var_ilength),pointer                  :: indxStruct                 !  model indices
+  type(var_dlength),pointer                  :: mparStruct                 !  model parameters
+  type(var_dlength),pointer                  :: progStruct                 !  model prognostic (state) variables
+  type(var_dlength),pointer                  :: diagStruct                 !  model diagnostic variables
+  type(var_dlength),pointer                  :: fluxStruct                 !  model fluxes
+  ! basin-average structures
+  type(var_d),pointer                        :: bparStruct                 !  basin-average parameters
+  type(var_dlength),pointer                  :: bvarStruct                 !  basin-average variables
+  ! ancillary data structures
+  type(var_d),pointer                        :: dparStruct                 !  default model parameters
   ! local HRU data structures
-  type(var_i),intent(inout)                :: startTime_hru              ! start time for the model simulation
-  type(var_i),intent(inout)                :: finishTime_hru             ! end time for the model simulation
-  type(var_i),intent(inout)                :: refTime_hru                ! reference time for the model simulation
-  type(var_i),intent(inout)                :: oldTime_hru                ! time from previous step
-  ! misc variables
-  integer(i4b),intent(out)                 :: err                        ! error code
-  character(*),intent(out)                 :: message                    ! error message
-  ! local variables
+  type(var_i),pointer                        :: startTime_hru              ! start time for the model simulation
+  type(var_i),pointer                        :: finishTime_hru             ! end time for the model simulation
+  type(var_i),pointer                        :: refTime_hru                ! reference time for the model simulation
+  type(var_i),pointer                        :: oldTime_hru                ! time from previous step
+  ! ---------------------------------------------------------------------------------------
+  ! * Local Subroutine Variables
+  ! ---------------------------------------------------------------------------------------
+  character(LEN=256)                       :: message                    ! error message
   character(LEN=256)                       :: cmessage                   ! error message of downwind routine
   integer(i4b)                             :: iStruct                    ! looping variables
+  ! ---------------------------------------------------------------------------------------
+  ! * Convert From C++ to Fortran
+  ! ---------------------------------------------------------------------------------------
+  call c_f_pointer(handle_forcStat,   forcStat)
+  call c_f_pointer(handle_progStat,   progStat)
+  call c_f_pointer(handle_diagStat,   diagStat)
+  call c_f_pointer(handle_fluxStat,   fluxStat)
+  call c_f_pointer(handle_indxStat,   indxStat)
+  call c_f_pointer(handle_bvarStat,   bvarStat)
+  call c_f_pointer(handle_timeStruct, timeStruct)
+  call c_f_pointer(handle_forcStruct, forcStruct)
+  call c_f_pointer(handle_attrStruct, attrStruct)
+  call c_f_pointer(handle_typeStruct, typeStruct)
+  call c_f_pointer(handle_idStruct,   idStruct)
+  call c_f_pointer(handle_indxStruct, indxStruct)
+  call c_f_pointer(handle_mparStruct, mparStruct)
+  call c_f_pointer(handle_progStruct, progStruct)
+  call c_f_pointer(handle_diagStruct, diagStruct)
+  call c_f_pointer(handle_fluxStruct, fluxStruct)
+  call c_f_pointer(handle_bparStruct, bparStruct)
+  call c_f_pointer(handle_bvarStruct, bvarStruct)
+  call c_f_pointer(handle_dparStruct, dparStruct)
+  call c_f_pointer(handle_startTime,  startTime_hru)
+  call c_f_pointer(handle_finshTime,  finishTime_hru)
+  call c_f_pointer(handle_refTime,    refTime_hru)
+  call c_f_pointer(handle_oldTime,    oldTime_hru)
+
   ! ---------------------------------------------------------------------------------------
   ! initialize error control
-  err=0; message='summa4chm_initialize/'
+  err=0; message='summaActors_initialize/'
 
   ! initialize the start of the initialization
   call date_and_time(values=startInit)
@@ -237,6 +298,6 @@ contains
   ! end association to info in data structures
   end associate
 
- end subroutine summa4chm_initialize
+ end subroutine summaActors_initialize
 
-end module summa4chm_init
+end module summaActors_init
diff --git a/build/source/dshare/get_ixname.f90 b/build/source/dshare/get_ixname.f90
index 3e4c59ac6828f480dfcf4bef9e73879cb86e563a..fbf9c4e3e37d3ac67a9c823f8e57f243f2379990 100755
--- a/build/source/dshare/get_ixname.f90
+++ b/build/source/dshare/get_ixname.f90
@@ -888,6 +888,7 @@ contains
   case('basin__AquiferRecharge'        ); get_ixbvar = iLookBVAR%basin__AquiferRecharge          ! recharge to the aquifer (m s-1)
   case('basin__AquiferBaseflow'        ); get_ixbvar = iLookBVAR%basin__AquiferBaseflow          ! baseflow from the aquifer (m s-1)
   case('basin__AquiferTranspire'       ); get_ixbvar = iLookBVAR%basin__AquiferTranspire         ! transpiration from the aquifer (m s-1)
+  case('basin__TotalRunoff'            ); get_ixbvar = iLookBVAR%basin__TotalRunoff              ! total runoff to channel from all active components (m s-1)
   case('basin__SoilDrainage'           ); get_ixbvar = iLookBVAR%basin__SoilDrainage
   ! variables to compute runoff
   case('routingRunoffFuture'           ); get_ixbvar = iLookBVAR%routingRunoffFuture             ! runoff in future time steps (m s-1)
diff --git a/build/source/dshare/popMetadat.f90 b/build/source/dshare/popMetadat.f90
index cec88e3ff6837115d4fa9834452595d86dd3de2a..4c2b371e64ea8dcb3f5294d6966f10242bc75e52 100755
--- a/build/source/dshare/popMetadat.f90
+++ b/build/source/dshare/popMetadat.f90
@@ -588,6 +588,7 @@ subroutine popMetadat(err,message)
   bvar_meta(iLookBVAR%basin__AquiferRecharge)  = var_info('basin__AquiferRecharge' , 'recharge to the aquifer'                                , 'm s-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
   bvar_meta(iLookBVAR%basin__AquiferBaseflow)  = var_info('basin__AquiferBaseflow' , 'baseflow from the aquifer'                              , 'm s-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
   bvar_meta(iLookBVAR%basin__AquiferTranspire) = var_info('basin__AquiferTranspire', 'transpiration loss from the aquifer'                    , 'm s-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
+  bvar_meta(iLookBVAR%basin__TotalRunoff)      = var_info('basin__TotalRunoff'     , 'total runoff to channel from all active components'     , 'm s-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
   bvar_meta(iLookBVAR%basin__SoilDrainage)     = var_info('basin__SoilDrainage'    , 'soil drainage'                                          , 'm s-1' , get_ixVarType('scalarv'), iMissVec, iMissVec, .false.)
   bvar_meta(iLookBVAR%routingRunoffFuture)     = var_info('routingRunoffFuture'    , 'runoff in future time steps'                            , 'm s-1' , get_ixVarType('routing'), iMissVec, iMissVec, .false.)
   bvar_meta(iLookBVAR%routingFractionFuture)   = var_info('routingFractionFuture'  , 'fraction of runoff in future time steps'                , '-'     , get_ixVarType('routing'), iMissVec, iMissVec, .false.)
diff --git a/build/source/dshare/var_lookup.f90 b/build/source/dshare/var_lookup.f90
index 8030472178a03b8f77b84973e099c1265695ab24..b1ae8c0ad725c0c80862e549b26dc1e118ac482d 100755
--- a/build/source/dshare/var_lookup.f90
+++ b/build/source/dshare/var_lookup.f90
@@ -705,6 +705,7 @@ MODULE var_lookup
   integer(i4b)    :: basin__AquiferRecharge     = integerMissing ! recharge to the aquifer (m s-1)
   integer(i4b)    :: basin__AquiferBaseflow     = integerMissing ! baseflow from the aquifer (m s-1)
   integer(i4b)    :: basin__AquiferTranspire    = integerMissing ! transpiration from the aquifer (m s-1)
+  integer(i4b)    :: basin__TotalRunoff         = integerMissing ! total runoff to channel from all active components (m s-1)
   integer(i4b)    :: basin__SoilDrainage        = integerMissing
   ! define variables for runoff
   integer(i4b)    :: routingRunoffFuture        = integerMissing ! runoff in future time steps (m s-1)
@@ -843,7 +844,7 @@ MODULE var_lookup
 
  ! named variables: basin-average variables
  type(iLook_bvar),    public,parameter :: iLookBVAR     =ilook_bvar    (  1,  2,  3,  4,  5,  6,  7,  8,  9, 10,&
-                                                                         11, 12)
+                                                                         11, 12, 13)
 
  ! named variables in varibale type structure
  type(iLook_varType), public,parameter :: iLookVarType  =ilook_varType (  1,  2,  3,  4,  5,  6,  7,  8,  9, 10,&
diff --git a/build/source/engine/ffile_info.f90 b/build/source/engine/ffile_info.f90
index 1dcaccfef8020942adeb0b5dc45eb83941f14f8a..32ff3292667bf16f4cefa4a6e391c603b96aacf2 100755
--- a/build/source/engine/ffile_info.f90
+++ b/build/source/engine/ffile_info.f90
@@ -23,7 +23,6 @@ USE nrtype
 USE netcdf
 USE data_types
 USE globalData,only:integerMissing
-USE globalData,only:ixHRUfile_min,ixHRUfile_max
 implicit none
 private
 public::ffile_info
diff --git a/build/source/engine/mDecisions.f90 b/build/source/engine/mDecisions.f90
index cc885c4cf1d6a75f7c3396c359612bccff87d85b..f04bd566f863bc2fba068e6566a5266339a28678 100755
--- a/build/source/engine/mDecisions.f90
+++ b/build/source/engine/mDecisions.f90
@@ -289,7 +289,6 @@ subroutine mDecisions(numSteps,err,message)
   if(dJulianFinsh < dJulianStart)then; err=20; message=trim(message)//'end time of simulation occurs before start time'; return; end if
 
   ! initialize the old time vector (time from the previous time step)
-  ! oldTime%var(:) = startTime%var(:)
 
   ! compute the number of time steps
   numSteps = nint( (dJulianFinsh - dJulianStart)*secprday/data_step ) + 1
diff --git a/build/source/engine/qTimeDelay.f90 b/build/source/engine/qTimeDelay.f90
index 75cb75c0a5c382900d3faee3eccc70a56a645b1f..abcec24dc110612071dbc6c3ea651379e4cbeb48 100755
--- a/build/source/engine/qTimeDelay.f90
+++ b/build/source/engine/qTimeDelay.f90
@@ -40,9 +40,7 @@ contains
  subroutine qOverland(&
                       ! input
                       ixRouting,             &  ! index for routing method
-                      averageSurfaceRunoff,  &  ! surface runoff (m s-1)
-                      averageSoilBaseflow,   &  ! baseflow from the soil profile (m s-1)
-                      averageAquiferBaseflow,&  ! baseflow from the aquifer (m s-1)
+                      averageTotalRunoff,    &  ! total runoff to the channel from all active components (m s-1)
                       fracFuture,            &  ! fraction of runoff in future time steps (m s-1)
                       qFuture,               &  ! runoff in future time steps (m s-1)
                       ! output
@@ -52,9 +50,7 @@ contains
  implicit none
  ! input
  integer(i4b),intent(in)    :: ixRouting              ! index for routing method
- real(dp),intent(in)        :: averageSurfaceRunoff   ! surface runoff (m s-1)
- real(dp),intent(in)        :: averageSoilBaseflow    ! baseflow from the soil profile (m s-1)
- real(dp),intent(in)        :: averageAquiferBaseflow ! baseflow from the aquifer (m s-1)
+ real(dp),intent(in)        :: averageTotalRunoff     ! total runoff to the channel from all active components (m s-1)ß
  real(dp),intent(in)        :: fracFuture(:)          ! fraction of runoff in future time steps (m s-1)
  real(dp),intent(inout)     :: qFuture(:)             ! runoff in future time steps (m s-1)
  ! output
@@ -69,7 +65,7 @@ contains
  err=0; message='qOverland/'
 
  ! compute instantaneous runoff (m s-1)
- averageInstantRunoff = averageSurfaceRunoff + averageAquiferBaseflow + averageSoilBaseflow
+ averageInstantRunoff = averageTotalRunoff
 
  ! compute routed runoff (m s-1)
  select case(ixRouting)  ! (select option for sub-grid routing)
diff --git a/build/source/netcdf/def_output.f90 b/build/source/netcdf/def_output.f90
index ed16b2391798af11577dc678b216c24e5cb2a0e5..59a6cae5264e43e22e8643c23ec79a2690f82b06 100755
--- a/build/source/netcdf/def_output.f90
+++ b/build/source/netcdf/def_output.f90
@@ -19,6 +19,8 @@
 ! along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 module def_output_module
+
+USE, intrinsic :: iso_c_binding
 USE data_types,only:var_i 
 USE netcdf
 USE netcdf_util_module,only:netcdf_err        ! netcdf error handling function
@@ -70,119 +72,146 @@ contains
  ! **********************************************************************************************************
  ! public subroutine def_output: define model output file
  ! **********************************************************************************************************
- subroutine def_output(summaVersion,buildTime,gitBranch,gitHash,nGRU,nHRU,nSoil,infile,ncid_c,err,message)
- USE globalData,only:structInfo                               ! information on the data structures
- USE globalData,only:forc_meta,attr_meta,type_meta            ! metaData structures
- USE globalData,only:prog_meta,diag_meta,flux_meta,deriv_meta ! metaData structures
- USE globalData,only:mpar_meta,indx_meta                      ! metaData structures
- USE globalData,only:bpar_meta,bvar_meta,time_meta            ! metaData structures
- USE globalData,only:model_decisions                          ! model decisions
- USE globalData,only:outFreq                                  ! output frequencies
- USE globalData,only:fname
- ! USE globalData,only:ncid
- USE var_lookup,only:maxVarFreq                               ! # of available output frequencies
- USE get_ixname_module,only:get_freqName                      ! get name of frequency from frequency index
-
- ! declare dummy variables
- character(*),intent(in)     :: summaVersion                  ! SUMMA version
- character(*),intent(in)     :: buildTime                     ! build time
- character(*),intent(in)     :: gitBranch                     ! git branch
- character(*),intent(in)     :: gitHash                       ! git hash
- integer(i4b),intent(in)     :: nGRU                          ! number of GRUs
- integer(i4b),intent(in)     :: nHRU                          ! number of HRUs
- integer(i4b),intent(in)     :: nSoil                         ! number of soil layers in the first HRU (used to define fixed length dimensions)
- character(*),intent(in)     :: infile                        ! file suffix
- type(var_i),intent(inout)   :: ncid_c                        ! id of output file
- integer(i4b),intent(out)    :: err                           ! error code
- character(*),intent(out)    :: message                       ! error message
- ! local variables
- integer(i4b)                :: ivar                          ! loop through model decisions
- integer(i4b)                :: iFreq                         ! loop through output frequencies
- integer(i4b)                :: iStruct                       ! loop through structure types
- character(len=32)           :: fstring                       ! string to hold model output freuqnecy
- character(len=256)          :: cmessage                      ! temporary error message
-
- ! initialize errors
- err=0; message="def_output/"
-
- ! close files if already open
- do iFreq=1,maxvarFreq
-  if (ncid_c%var(iFreq)/=integerMissing) then
-   call nc_file_close(ncid_c%var(iFreq),err,cmessage)
-   if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+subroutine def_output(handle_ncid,startGRU,nGRU,nHRU,err) bind(C, name='def_output')
+  USE globalData,only:structInfo                               ! information on the data structures
+  USE globalData,only:forc_meta,attr_meta,type_meta            ! metaData structures
+  USE globalData,only:prog_meta,diag_meta,flux_meta,deriv_meta ! metaData structures
+  USE globalData,only:mpar_meta,indx_meta                      ! metaData structures
+  USE globalData,only:bpar_meta,bvar_meta,time_meta            ! metaData structures
+  USE globalData,only:model_decisions                          ! model decisions
+  USE globalData,only:outFreq                                  ! output frequencies
+  USE globalData,only:fname
+  ! Some global variabels required in the writing process
+  USE globalData,only:outputTimeStep
+  USE globalData,only:nHRUrun
+  USE globalData,only:nGRUrun
+  USE globalData,only:gru_struc
+  USE globalData,only:fileout
+  ! modules that are not globalData
+  USE var_lookup,only:maxVarFreq                               ! # of available output frequencies
+  USE get_ixname_module,only:get_freqName                      ! get name of frequency from frequency index
+  USE summaActors_FileManager,only:OUTPUT_PATH,OUTPUT_PREFIX ! define output file
+
+  ! ---------------------------------------------------------------------------------------
+  ! * variables from C++
+  ! ---------------------------------------------------------------------------------------
+  type(c_ptr),intent(in), value        :: handle_ncid       ! ncid of the output file
+  integer(c_int),intent(in)            :: startGRU          ! startGRU for the entire job (for file creation)
+  integer(c_int),intent(in)            :: nGRU                          ! number of GRUs
+  integer(c_int),intent(in)            :: nHRU                          ! number of HRUs
+  integer(c_int),intent(out)           :: err                           ! error code
+  ! ---------------------------------------------------------------------------------------
+  ! * Fortran Variables For Conversion
+  ! ---------------------------------------------------------------------------------------
+  type(var_i),pointer                  :: ncid                        ! id of output file
+  ! ---------------------------------------------------------------------------------------
+  ! * Local Subroutine Variables
+  ! ---------------------------------------------------------------------------------------
+  character(len=256)                   :: message                       ! error message
+  integer(i4b)                         :: ivar                          ! loop through model decisions
+  integer(i4b)                         :: iFreq                         ! loop through output frequencies
+  integer(i4b)                         :: iStruct                       ! loop through structure types
+  character(len=32)                    :: fstring                       ! string to hold model output freuqnecy
+  character(len=256)                   :: cmessage                      ! temporary error message
+  integer(i4b)                         :: iGRU
+  character(LEN=256)                   :: startGRUString    ! String Variable to convert startGRU
+  character(LEN=256)                   :: numGRUString      ! String Varaible to convert numGRU
+  ! ---------------------------------------------------------------------------------------
+  ! * Convert From C++ to Fortran
+  ! ---------------------------------------------------------------------------------------
+  call c_f_pointer(handle_ncid, ncid)
+
+
+  ! initialize errors
+  err=0; message="def_output/"
+
+  ! allocate space for the output file ID array
+  if (.not.allocated(ncid%var))then
+    allocate(ncid%var(maxVarFreq))
+    ncid%var(:) = integerMissing
   endif
- end do
-
- ! initialize netcdf file id
-
- ! ncid(:) = integerMissing
-
-! create initial file
-! each file will have a master name with a frequency appended at the end:
-! e.g., xxxxxxxxx_timestep.nc  (for output at every model timestep)
-! e.g., xxxxxxxxx_monthly.nc   (for monthly model output)
- do iFreq=1,maxvarFreq
-   ! skip frequencies that are not needed
-
-   if(.not.outFreq(iFreq)) cycle
-
-   ! create file
-   fstring = get_freqName(iFreq)
-   fname   = trim(infile)//'_'//trim(fstring)//'.nc'
-   call ini_create(nGRU,nHRU,nSoil,trim(fname),ncid_c%var(iFreq),err,cmessage)
-   if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
-!  print*,'Created output file: '//trim(fname)
-
-   ! define SUMMA version
-   do iVar=1,4
-   ! write attributes
-      if(iVar==1) call put_attrib(ncid_c%var(iFreq),'summaVersion', summaVersion, err, cmessage)  ! SUMMA version
-      if(iVar==2) call put_attrib(ncid_c%var(iFreq),'buildTime'   , buildTime   , err, cmessage)  ! build time
-      if(iVar==3) call put_attrib(ncid_c%var(iFreq),'gitBranch'   , gitBranch   , err, cmessage)  ! git branch
-      if(iVar==4) call put_attrib(ncid_c%var(iFreq),'gitHash'     , gitHash     , err, cmessage)  ! git hash
-      ! check errors
-      if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
-   end do
 
-   ! define model decisions
-   do iVar = 1,size(model_decisions)
-      if(model_decisions(iVar)%iDecision.ne.integerMissing)then
-         call put_attrib(ncid_c%var(iFreq),model_decisions(iVar)%cOption,model_decisions(iVar)%cDecision,err,cmessage)
-         if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
-      end if
-   end do
-   
-   ! define variables
-   do iStruct = 1,size(structInfo)
-      select case (trim(structInfo(iStruct)%structName))
-      case('attr' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,  noTime,attr_meta, outputPrecision, err,cmessage)  ! local attributes HRU
-      case('type' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,  noTime,type_meta, nf90_int,   err,cmessage)       ! local classification
-      case('mpar' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,  noTime,mpar_meta, outputPrecision, err,cmessage)  ! model parameters
-      case('bpar' ); call def_variab(ncid_c%var(iFreq),iFreq,needGRU,  noTime,bpar_meta, outputPrecision, err,cmessage)  ! basin-average param
-      case('indx' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,indx_meta, nf90_int,   err,cmessage)       ! model variables
-      case('deriv'); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,deriv_meta,outputPrecision, err,cmessage)  ! model derivatives
-      case('time' ); call def_variab(ncid_c%var(iFreq),iFreq,  noHRU,needTime,time_meta, nf90_int,   err,cmessage)       ! model derivatives
-      case('forc' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,forc_meta, outputPrecision, err,cmessage)  ! model forcing data
-      case('prog' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,prog_meta, outputPrecision, err,cmessage)  ! model prognostics
-      case('diag' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,diag_meta, outputPrecision, err,cmessage)  ! model diagnostic variables
-      case('flux' ); call def_variab(ncid_c%var(iFreq),iFreq,needHRU,needTime,flux_meta, outputPrecision, err,cmessage)  ! model fluxes
-      case('bvar' ); call def_variab(ncid_c%var(iFreq),iFreq,needGRU,needTime,bvar_meta, outputPrecision, err,cmessage)  ! basin-average variables
-      case('id'   ); cycle                                                                                         ! ids -- see write_hru_info()
-      case default; err=20; message=trim(message)//'unable to identify lookup structure';
-      end select
-      ! error handling
-      if(err/=0)then;err=20;message=trim(message)//trim(cmessage)//'[structure =  '//trim(structInfo(iStruct)%structName);return;end if
-   end do ! iStruct
-   ! write HRU dimension and ID for each output file
-   call write_hru_info(ncid_c%var(iFreq), err, cmessage); if(err/=0) then; message=trim(message)//trim(cmessage); return; end if
+  ! initalize outputTimeStep - keeps track of the step the GRU is writing for
+  if (.not.allocated(outputTimeStep))then
+    allocate(outputTimeStep(nGRU))
+    do iGRU = 1, nGRU
+      allocate(outputTimeStep(iGRU)%dat(maxVarFreq))
+      outputTimeStep(iGRU)%dat(:) = 1
+    end do
+  end if
 
- end do
+  ! Set the global variable for the number of HRU and GRU in run
+  nGRUrun = nGRU
+  nHRUrun = nGRU
+
+  ! create the name of the new files
+  write(unit=startGRUString,fmt=*)startGRU
+  write(unit=numGRUString,fmt=*)  nGRU
+  fileout = trim(OUTPUT_PATH)//trim(OUTPUT_PREFIX)//"GRU"&
+              //trim(adjustl(startGRUString))//"-"//trim(adjustl(numGRUString))
+
+  ! close files if already open
+  do iFreq=1,maxvarFreq
+    if (ncid%var(iFreq)/=integerMissing) then
+    call nc_file_close(ncid%var(iFreq),err,cmessage)
+    if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+    endif
+  end do
+
+  ! create initial file
+  ! each file will have a master name with a frequency appended at the end:
+  ! e.g., xxxxxxxxx_timestep.nc  (for output at every model timestep)
+  ! e.g., xxxxxxxxx_monthly.nc   (for monthly model output)
+  do iFreq=1,maxvarFreq
+    ! skip frequencies that are not needed
+
+    if(.not.outFreq(iFreq)) cycle
+
+    ! create file
+    fstring = get_freqName(iFreq)
+    fname   = trim(fileout)//'_'//trim(fstring)//'.nc'
+    call ini_create(nGRU,nHRU,gru_struc(1)%hruInfo(1)%nSoil,trim(fname),ncid%var(iFreq),err,cmessage)
+    if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+
+    ! define model decisions
+    do iVar = 1,size(model_decisions)
+        if(model_decisions(iVar)%iDecision.ne.integerMissing)then
+          call put_attrib(ncid%var(iFreq),model_decisions(iVar)%cOption,model_decisions(iVar)%cDecision,err,cmessage)
+          if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
+        end if
+    end do
+    
+    ! define variables
+    do iStruct = 1,size(structInfo)
+        select case (trim(structInfo(iStruct)%structName))
+        case('attr' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,  noTime,attr_meta, outputPrecision, err,cmessage)  ! local attributes HRU
+        case('type' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,  noTime,type_meta, nf90_int,   err,cmessage)       ! local classification
+        case('mpar' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,  noTime,mpar_meta, outputPrecision, err,cmessage)  ! model parameters
+        case('bpar' ); call def_variab(ncid%var(iFreq),iFreq,needGRU,  noTime,bpar_meta, outputPrecision, err,cmessage)  ! basin-average param
+        case('indx' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,indx_meta, nf90_int,   err,cmessage)       ! model variables
+        case('deriv'); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,deriv_meta,outputPrecision, err,cmessage)  ! model derivatives
+        case('time' ); call def_variab(ncid%var(iFreq),iFreq,  noHRU,needTime,time_meta, nf90_int,   err,cmessage)       ! model derivatives
+        case('forc' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,forc_meta, outputPrecision, err,cmessage)  ! model forcing data
+        case('prog' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,prog_meta, outputPrecision, err,cmessage)  ! model prognostics
+        case('diag' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,diag_meta, outputPrecision, err,cmessage)  ! model diagnostic variables
+        case('flux' ); call def_variab(ncid%var(iFreq),iFreq,needHRU,needTime,flux_meta, outputPrecision, err,cmessage)  ! model fluxes
+        case('bvar' ); call def_variab(ncid%var(iFreq),iFreq,needGRU,needTime,bvar_meta, outputPrecision, err,cmessage)  ! basin-average variables
+        case('id'   ); cycle                                                                                         ! ids -- see write_hru_info()
+        case default; err=20; message=trim(message)//'unable to identify lookup structure';
+        end select
+        ! error handling
+        if(err/=0)then;err=20;message=trim(message)//trim(cmessage)//'[structure =  '//trim(structInfo(iStruct)%structName);return;end if
+    end do ! iStruct
+    ! write HRU dimension and ID for each output file
+    call write_hru_info(ncid%var(iFreq), err, cmessage); if(err/=0) then; message=trim(message)//trim(cmessage); return; end if
+
+  end do
 end subroutine def_output
 
- ! **********************************************************************************************************
- ! private subroutine ini_create: initial create
- ! **********************************************************************************************************
- subroutine ini_create(nGRU,nHRU,nSoil,infile,ncid,err,message)
+! **********************************************************************************************************
+! private subroutine ini_create: initial create
+! **********************************************************************************************************
+subroutine ini_create(nGRU,nHRU,nSoil,infile,ncid,err,message)
  ! variables to define number of steps per file (total number of time steps, step length, etc.)
  USE multiconst,only:secprday           ! number of seconds per day
  ! model decisions
diff --git a/build/source/netcdf/outputStrucWrite.f90 b/build/source/netcdf/outputStrucWrite.f90
index ce67959febff75b78f30c4aa003ed7f9d765cf64..58f277e3d805167f9ab837a37aeeb687db2b3a2d 100755
--- a/build/source/netcdf/outputStrucWrite.f90
+++ b/build/source/netcdf/outputStrucWrite.f90
@@ -100,7 +100,7 @@ contains
   integer(i4b)                :: iVar             ! loop through variables
 
   ! initialize error control
-  err=0;message="writeParm/"
+  err=0;message="outputStrucWrite.f90-writeParm/"
 
   ! loop through local column model parameters
   do iVar = 1,size(meta)
@@ -194,7 +194,7 @@ subroutine writeData(indxGRU,indxHRU,iStep,structName,finalizeStats, &
   integer(i4b),parameter           :: ixInteger=1001    ! named variable for integer
   integer(i4b),parameter           :: ixReal=1002       ! named variable for real
   ! initialize error control
-  err=0;message="writeData/"
+  err=0;message="outputStrucWrite.f90-writeData/"
 
   ! loop through output frequencies
   do iFreq=1,maxvarFreq
@@ -240,6 +240,8 @@ subroutine writeData(indxGRU,indxHRU,iStep,structName,finalizeStats, &
               outputStructure(1)%diagStat(1)%gru(indxGRU)%hru(indxHRU)%var(map(iVar))%tim(iStep)%dat(iFreq) = stat%var(map(iVar))%dat(iFreq)
             case('flux')
               outputStructure(1)%fluxStat(1)%gru(indxGRU)%hru(indxHRU)%var(map(iVar))%tim(iStep)%dat(iFreq) = stat%var(map(iVar))%dat(iFreq)
+            case('indx')
+              outputStructure(1)%indxStat(1)%gru(indxGRU)%hru(indxHRU)%var(map(iVar))%tim(iStep)%dat(iFreq) = stat%var(map(iVar))%dat(iFreq)
             case default
               err=21; message=trim(message)//"Stats structure not found"; return
             end select
@@ -339,7 +341,7 @@ subroutine writeBasin(indxGRU,indxHRU,iStep,finalizeStats,&
  integer(i4b)                  :: iStat             ! statistics index
  integer(i4b)                  :: iFreq             ! frequency index
  ! initialize error control
- err=0;message="f-writeBasin/"
+ err=0;message="outputStrucWrite.f90-writeBasin/"
 
  ! loop through output frequencies
  do iFreq=1,maxvarFreq
@@ -404,7 +406,7 @@ subroutine writeTime(indxGRU,indxHRU,iStep,finalizeStats,meta,dat,err,message)
  integer(i4b)                  :: iVar              ! variable index
  integer(i4b)                  :: iFreq             ! frequency index
  ! initialize error control
- err=0;message="f-writeTime/"
+ err=0;message="outputStrucWrite.f90-writeTime/"
 
  ! loop through output frequencies
  do iFreq=1,maxvarFreq
diff --git a/build/source/netcdf/writeOutput.f90 b/build/source/netcdf/writeOutput.f90
index 7ce8d7d91d53d8cfaf5e0bf9654c941c47d7b704..3b7ce4951b311a082601b4fbcb0f5c3cb5b73c35 100644
--- a/build/source/netcdf/writeOutput.f90
+++ b/build/source/netcdf/writeOutput.f90
@@ -78,7 +78,8 @@ public::writeParm
 public::writeData
 public::writeBasin
 public::writeTime
-public::writeRestart
+private::writeScalar
+private::writeVector
 ! define dimension lengths
 integer(i4b),parameter      :: maxSpectral=2              ! maximum number of spectral bands
 contains
@@ -147,10 +148,10 @@ subroutine writeParm(ncid,ispatial,struct,meta,err,message)
 
 end subroutine writeParm
 
-    ! **************************************************************************************
-    ! public subroutine writeData: write model time-dependent data
-    ! **************************************************************************************
-subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,nSteps, &
+! **************************************************************************************
+! public subroutine writeData: write model time-dependent data
+! **************************************************************************************
+subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,nSteps, &
             minGRU, maxGRU, numGRU, & 
             meta,stat,dat,structName,map,indx,err,message)
   USE data_types,only:var_info                       ! metadata type
@@ -160,7 +161,6 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,
   USE var_lookup,only:iLookStat                      ! index into stat structure
   USE globalData,only:outFreq                        ! output file information
   USE globalData,only:outputStructure
-  USE globalData,only:gru_struc
   USE globalData,only:failedHRUs
   USE get_ixName_module,only:get_varTypeName         ! to access type strings for error messages
   USE get_ixName_module,only:get_statName            ! to access type strings for error messages
@@ -171,7 +171,6 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,
   integer(i4b)  ,intent(inout)     :: outputTimestep(:) ! output time step
   integer(i4b)  ,intent(inout)     :: outputTimestepUpdate(:) ! number of HRUs in the run domain
   integer(i4b)  ,intent(in)        :: maxLayers         ! maximum number of layers
-  integer(i4b)  ,intent(in)        :: indxGRU
   integer(i4b)  ,intent(in)        :: nSteps            ! number of timeSteps
   integer(i4b)  ,intent(in)        :: minGRU            ! minGRU index to write
   integer(i4b)  ,intent(in)        :: maxGRU            ! maxGRU index to write - probably not needed
@@ -185,30 +184,18 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,
   integer(i4b)  ,intent(out)       :: err               ! error code
   character(*)  ,intent(out)       :: message           ! error message
   ! local variables
-  integer(i4b)                     :: iHRU
   integer(i4b)                     :: iVar              ! variable index
   integer(i4b)                     :: iStat             ! statistics index
   integer(i4b)                     :: iFreq             ! frequency index
   integer(i4b)                     :: ncVarID           ! used only for time
-  integer(i4b)                     :: nSnow             ! number of snow layers
-  integer(i4b)                     :: nSoil             ! number of soil layers
-  integer(i4b)                     :: nLayers           ! total number of layers
   ! output arrays
-  integer(i4b)                     :: datLength         ! length of each data vector
-  integer(i4b)                     :: maxLength         ! maximum length of each data vector
   real(rkind)                      :: timeVec(nSteps)   ! timeVal to copy
-  real(rkind)                      :: realVec(numGRU, nSteps)   ! real vector for all HRUs in the run domain
-  real(rkind)                      :: realArray(nSteps,maxLayers+1)  ! real array for all HRUs in the run domain
-  integer(i4b)                     :: intArray(nSteps,maxLayers+1)   ! integer array for all HRUs in the run domain
-  integer(i4b)                     :: dataType          ! type of data
   integer(i4b),parameter           :: ixInteger=1001    ! named variable for integer
   integer(i4b),parameter           :: ixReal=1002       ! named variable for real
   integer(i4b)                     :: stepCounter       ! counter to know how much data we have to write, needed because we do not always write nSteps
-  integer(i4b)                     :: gruCounter
   integer(i4b)                     :: iStep
   integer(i4b)                     :: iGRU
   integer(i4b)                     :: verifiedGRUIndex    ! index of HRU verified to not have failed
-  integer(i4b)                     :: verifiedStepCounter ! numStepsForStepCounter from HRU that did not fail
   ! initialize error control
   err=0;message="writeData/"
   ! loop through output frequencies
@@ -256,121 +243,13 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,
       ! check that the variable is desired
       if (iStat==integerMissing.or.trim(meta(iVar)%varName)=='unknown') cycle
 
-        ! do iHRU=1,gru_struc(iGRU)%hruCount
-          ! stats output: only scalar variable type
-          if(meta(iVar)%varType==iLookVarType%scalarv) then
-            select type(stat)
-              class is (gru_hru_time_doubleVec)
-                if (minGRU == maxGRU)then
-                  gruCounter = 1
-                  do iStep = 1, nSteps
-                    if(.not.outputStructure(1)%finalizeStats(1)%gru(verifiedGRUIndex)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-                    stepCounter = stepCounter + 1
-                    realVec(gruCounter, stepCounter) = stat%gru(verifiedGRUIndex)%hru(1)%var(map(iVar))%tim(iStep)%dat(iFreq)
-                  end do ! iStep
-                else 
-                  gruCounter = 0
-                  do iGRU = minGRU, maxGRU
-                    stepCounter = 0
-                    gruCounter = gruCounter + 1
-                    do iStep = 1, nSteps
-                      if(.not.outputStructure(1)%finalizeStats(1)%gru(verifiedGRUIndex)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-                      stepCounter = stepCounter + 1
-                      realVec(gruCounter, stepCounter) = stat%gru(iGRU)%hru(1)%var(map(iVar))%tim(iStep)%dat(iFreq)
-                    end do ! iStep
-                  end do ! iGRU  
-                endif
-                
-                err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realVec(1:gruCounter, 1:stepCounter),start=(/minGRU,outputTimestep(iFreq)/),count=(/numGRU,stepCounter/))
-                if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
-                  print*, "ERROR Missmatch in Steps - stat doubleVec"
-                  print*, "iFreq = ", iFreq
-                  print*, "outputTimeStepUpdate(iFreq) = ", outputTimeStepUpdate(iFreq)
-                  print*, "stepCounter = ", stepCounter
-                  return
-                endif
-              class default; err=20; message=trim(message)//'stats must be scalarv and of type gru_hru_doubleVec'; return
-            end select  ! stat
-          
-          ! non-scalar variables: regular data structures
-          else
-
-            ! initialize the data vectors
-            select type (dat)
-              class is (gru_hru_time_doubleVec); realArray(:,:) = realMissing;    dataType=ixReal
-              class is (gru_hru_time_intVec);     intArray(:,:) = integerMissing; dataType=ixInteger
-              class default; err=20; message=trim(message)//'data must not be scalarv and either of type gru_hru_doubleVec or gru_hru_intVec'; return
-            end select
-
-
-            ! get the model layers
-            nSoil   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSoil)%tim(iStep)%dat(1)
-            nSnow   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSnow)%tim(iStep)%dat(1)
-            nLayers = indx%gru(iGRU)%hru(1)%var(iLookIndex%nLayers)%tim(iStep)%dat(1)
-
-            ! get the length of each data vector
-            select case (meta(iVar)%varType)
-                case(iLookVarType%wLength); datLength = maxSpectral
-                case(iLookVarType%midToto); datLength = nLayers
-                case(iLookVarType%midSnow); datLength = nSnow
-                case(iLookVarType%midSoil); datLength = nSoil
-                case(iLookVarType%ifcToto); datLength = nLayers+1
-                case(iLookVarType%ifcSnow); datLength = nSnow+1
-                case(iLookVarType%ifcSoil); datLength = nSoil+1
-                case default; cycle
-            end select ! vartype
-
-            ! get the data vectors
-            select type (dat)
-                class is (gru_hru_time_doubleVec)
-                  do iStep = 1, nSteps
-                    if(.not.outputStructure(1)%finalizeStats(1)%gru(verifiedGRUIndex)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-                    stepCounter = stepCounter + 1
-                    realArray(stepCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
-                  end do
-
-                class is (gru_hru_time_intVec)
-                  do iStep = 1, nSteps
-                    if(.not.outputStructure(1)%finalizeStats(1)%gru(verifiedGRUIndex)%hru(1)%tim(iStep)%dat(iFreq)) cycle
-                    stepCounter = stepCounter + 1
-                    intArray(stepCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
-                  end do
-                class default; err=20; message=trim(message)//'data must not be scalarv and either of type gru_hru_doubleVec or gru_hru_intVec'; return
-            end select
-
-            ! get the maximum length of each data vector
-            select case (meta(iVar)%varType)
-              case(iLookVarType%wLength); maxLength = maxSpectral
-              case(iLookVarType%midToto); maxLength = maxLayers
-              case(iLookVarType%midSnow); maxLength = maxLayers-nSoil
-              case(iLookVarType%midSoil); maxLength = nSoil
-              case(iLookVarType%ifcToto); maxLength = maxLayers+1
-              case(iLookVarType%ifcSnow); maxLength = (maxLayers-nSoil)+1
-              case(iLookVarType%ifcSoil); maxLength = nSoil+1
-              case default; cycle
-            end select ! vartype
-
-            ! write the data vectors
-            select case(dataType)
-              case(ixReal)
-
-                err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realArray(1:stepCounter,:),start=(/iGRU,1,outputTimestep(iFreq)/),count=(/1,maxLength,stepCounter/))
-                if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
-                  print*, "ERROR Missmatch in Steps - ixReal"
-                  return
-                endif
-              case(ixInteger)
-
-                err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),intArray(1:stepCounter,:),start=(/iGRU,1,outputTimestep(iFreq)/),count=(/1,maxLength,stepCounter/))
-                if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
-                  print*, "ERROR Missmatch in Steps - ixInteger"
-                  return
-                endif
-              case default; err=20; message=trim(message)//'data must be of type integer or real'; return
-            end select ! data type
-
-          end if ! not scalarv
-        ! end do ! HRU Loop
+        ! stats output: only scalar variable type
+        if(meta(iVar)%varType==iLookVarType%scalarv) then
+          call writeScalar(ncid, outputTimeStep, outputTimeStepUpdate, nSteps, minGRU, maxGRU, numGRU, iFreq, iVar, meta, stat, map, err, message)
+        else ! non-scalar variables: regular data structures
+          call writeVector(ncid, outputTimeStep, outputTimeStepUpdate, maxLayers, nSteps, minGRU, maxGRU, numGRU, iFreq, iVar, meta, dat, &
+            indx, err, message)
+        end if ! not scalarv
 
       ! process error code
       if (err/=0) message=trim(message)//trim(meta(iVar)%varName)//'_'//trim(get_statName(iStat))
@@ -382,6 +261,187 @@ subroutine writeData(ncid,outputTimestep,outputTimestepUpdate,maxLayers,indxGRU,
 
 end subroutine writeData
 
+subroutine writeScalar(ncid, outputTimestep, outputTimestepUpdate, nSteps, minGRU, maxGRU, &
+  numGRU, iFreq, iVar, meta, stat, map, err, message)
+  USE data_types,only:var_info                       ! metadata type
+
+  implicit none
+  ! declare dummy variables
+  type(var_i)   ,intent(in)         :: ncid                    ! fileid
+  integer(i4b)  ,intent(inout)      :: outputTimestep(:)       ! output time step
+  integer(i4b)  ,intent(inout)      :: outputTimestepUpdate(:) ! number of HRUs in the run domain
+  integer(i4b)  ,intent(in)         :: nSteps                  ! number of timeSteps
+  integer(i4b)  ,intent(in)         :: minGRU                  ! minGRU index to write
+  integer(i4b)  ,intent(in)         :: maxGRU                  ! maxGRU index to write - probably not needed
+  integer(i4b)  ,intent(in)         :: numGRU
+  integer(i4b)  ,intent(in)         :: iFreq                   ! output file index (year, month, day, timesteps)
+  integer(i4b)  ,intent(in)         :: iVar                    ! netcdf variable we are writing data for
+  type(var_info),intent(in)         :: meta(:)                 ! meta data
+  class(*)      ,intent(in)         :: stat                    ! stats data
+  integer(i4b)  ,intent(in)         :: map(:)                  ! map into stats child struct
+  integer(i4b)  ,intent(inout)      :: err
+  character(*)  ,intent(inout)      :: message
+
+  ! local variables
+  integer(i4b)                      :: gruCounter             ! counter for the realVecs
+  integer(i4b)                      :: iStep                  ! counter for looping over nSteps
+  integer(i4b)                      :: stepCounter            ! counter for the realVec
+  integer(i4b)                      :: iGRU
+  ! output array
+  real(rkind)                       :: realVec(numGRU, nSteps)! real vector for all HRUs in the run domain
+
+  err=0; message="writeOutput.f90-writeScalar/"
+
+  select type(stat)
+    class is (gru_hru_time_doubleVec)
+      gruCounter=0
+      do iGRU = minGRU, maxGRU
+        stepCounter = 0
+        gruCounter = gruCounter + 1
+        do iStep = 1, nSteps
+          if(.not.outputStructure(1)%finalizeStats(1)%gru(iGRU)%hru(1)%tim(iStep)%dat(iFreq)) cycle
+          stepCounter = stepCounter + 1
+          realVec(gruCounter, stepCounter) = stat%gru(iGRU)%hru(1)%var(map(iVar))%tim(iStep)%dat(iFreq)
+        end do ! iStep
+      end do ! iGRU  
+    
+      err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realVec(1:gruCounter, 1:stepCounter),start=(/minGRU,outputTimestep(iFreq)/),count=(/numGRU,stepCounter/))
+      if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
+        print*, "ERROR Missmatch in Steps - stat doubleVec"
+        print*, "   outputTimeStepUpdate(iFreq) = ", outputTimeStepUpdate(iFreq)
+        print*, "   stepCounter = ", stepCounter
+        return
+      endif
+    class default; err=20; message=trim(message)//'stats must be scalarv and of type gru_hru_doubleVec'; return
+  end select  ! stat
+
+end subroutine
+
+subroutine writeVector(ncid, outputTimestep, outputTimestepUpdate, maxLayers, nSteps, minGRU, maxGRU, &
+  numGRU, iFreq, iVar, meta, dat, indx, err, message)
+  USE data_types,only:var_info                       ! metadata type
+  USE var_lookup,only:iLookIndex                     ! index into index structure
+  USE var_lookup,only:iLookVarType                   ! index into type structure
+
+  implicit none
+  type(var_i)   ,intent(in)             :: ncid                    ! fileid
+  integer(i4b)  ,intent(inout)          :: outputTimestep(:)       ! output time step
+  integer(i4b)  ,intent(inout)          :: outputTimestepUpdate(:) ! number of HRUs in the run domain
+  integer(i4b)  ,intent(in)             :: maxLayers         ! maximum number of layers
+  integer(i4b)  ,intent(in)             :: nSteps                  ! number of timeSteps
+  integer(i4b)  ,intent(in)             :: minGRU                  ! minGRU index to write
+  integer(i4b)  ,intent(in)             :: maxGRU                  ! maxGRU index to write - probably not needed
+  integer(i4b)  ,intent(in)             :: numGRU
+  integer(i4b)  ,intent(in)             :: iFreq                   ! output file index (year, month, day, timesteps)
+  integer(i4b)  ,intent(in)             :: iVar                    ! netcdf variable we are writing data for
+  type(var_info),intent(in)             :: meta(:)                 ! meta data
+  class(*)      ,intent(in)             :: dat               ! timestep data
+  type(gru_hru_time_intVec) ,intent(in) :: indx         ! index data
+  integer(i4b)  ,intent(inout)          :: err
+  character(*)  ,intent(inout)          :: message
+
+  ! local variables
+  integer(i4b)                          :: gruCounter             ! counter for the realVecs
+  integer(i4b)                          :: iStep                  ! counter for looping over nSteps
+  integer(i4b)                          :: stepCounter            ! counter for the realVec
+  integer(i4b)                          :: iGRU
+  integer(i4b)                          :: nSoil
+  integer(i4b)                          :: nSnow
+  integer(i4b)                          :: nLayers
+  ! output array
+  integer(i4b)                          :: datLength         ! length of each data vector
+  integer(i4b)                          :: maxLength         ! maximum length of each data vector
+  integer(i4b)                          :: dataType          ! type of data
+  integer(i4b),parameter                :: ixInteger=1001    ! named variable for integer
+  integer(i4b),parameter                :: ixReal=1002       ! named variable for real
+  real(rkind)                           :: realArray(numGRU,maxLayers+1)  ! real array for all HRUs in the run domain
+  integer(i4b)                          :: intArray(numGRU,maxLayers+1)   ! integer array for all HRUs in the run domain
+  err=0; message="writeOutput.f90-writeVector/"
+
+  ! initialize the data vectors
+  select type (dat)
+    class is (gru_hru_time_doubleVec); realArray(:,:) = realMissing;    dataType=ixReal
+    class is (gru_hru_time_intVec);     intArray(:,:) = integerMissing; dataType=ixInteger
+    class default; err=20; message=trim(message)//'data must not be scalarv and either of type gru_hru_doubleVec or gru_hru_intVec'; return
+  end select
+
+  ! Loop over GRUs
+  
+  stepCounter = outputTimeStep(iFreq)
+  do iStep = 1, nSteps
+    gruCounter = 1
+    do iGRU = minGRU, maxGRU
+      ! get the model layers
+      nSoil   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSoil)%tim(iStep)%dat(1)
+      nSnow   = indx%gru(iGRU)%hru(1)%var(iLookIndex%nSnow)%tim(iStep)%dat(1)
+      nLayers = indx%gru(iGRU)%hru(1)%var(iLookIndex%nLayers)%tim(iStep)%dat(1)
+
+      ! get the length of each data vector
+      select case (meta(iVar)%varType)
+          case(iLookVarType%wLength); datLength = maxSpectral
+          case(iLookVarType%midToto); datLength = nLayers
+          case(iLookVarType%midSnow); datLength = nSnow
+          case(iLookVarType%midSoil); datLength = nSoil
+          case(iLookVarType%ifcToto); datLength = nLayers+1
+          case(iLookVarType%ifcSnow); datLength = nSnow+1
+          case(iLookVarType%ifcSoil); datLength = nSoil+1
+          case default; cycle
+      end select ! vartype
+
+      ! get the data vectors
+      select type (dat)
+          class is (gru_hru_time_doubleVec)
+            ! do iStep = 1, nSteps
+              if(.not.outputStructure(1)%finalizeStats(1)%gru(iGRU)%hru(1)%tim(iStep)%dat(iFreq)) cycle
+              ! stepCounter = stepCounter + 1
+              realArray(gruCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
+            ! end do
+
+          class is (gru_hru_time_intVec)
+            ! do iStep = 1, nSteps
+              if(.not.outputStructure(1)%finalizeStats(1)%gru(iGRU)%hru(1)%tim(iStep)%dat(iFreq)) cycle
+              ! stepCounter = stepCounter + 1
+              intArray(gruCounter,1:datLength) = dat%gru(iGRU)%hru(1)%var(iVar)%tim(iStep)%dat(:)
+            ! end do
+          class default; err=20; message=trim(message)//'data must not be scalarv and either of type gru_hru_doubleVec or gru_hru_intVec'; return
+      end select
+
+      ! get the maximum length of each data vector
+      select case (meta(iVar)%varType)
+        case(iLookVarType%wLength); maxLength = maxSpectral
+        case(iLookVarType%midToto); maxLength = maxLayers
+        case(iLookVarType%midSnow); maxLength = maxLayers-nSoil
+        case(iLookVarType%midSoil); maxLength = nSoil
+        case(iLookVarType%ifcToto); maxLength = maxLayers+1
+        case(iLookVarType%ifcSnow); maxLength = (maxLayers-nSoil)+1
+        case(iLookVarType%ifcSoil); maxLength = nSoil+1
+        case default; cycle
+      end select ! vartype
+    end do ! iGRU
+
+   ! write the data vectors
+    select case(dataType)
+
+      case(ixReal)
+        err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),realArray(1:numGRU,1:maxLength),start=(/minGRU,1,stepCounter/),count=(/numGRU,maxLength,1/))
+        if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixReal)"; return; endif
+
+      case(ixInteger)
+        err = nf90_put_var(ncid%var(iFreq),meta(iVar)%ncVarID(iFreq),intArray(1:numGRU,1:maxLength),start=(/minGRU,1,stepCounter/),count=(/numGRU,maxLength,1/))
+        if(err/=0)then; print*, "ERROR: with nf90_put_var in data vector (ixInteger)"; return; endif
+
+      case default; err=20; message=trim(message)//'data must be of type integer or real'; return
+    end select ! data type
+    stepCounter = stepCounter + 1
+  end do ! iStep
+  ! if (outputTimeStepUpdate(iFreq) /= stepCounter ) then
+  !   print*, "ERROR Missmatch in Steps: for non scalar case"
+  !   print*, "   outputTimeStepUpdate(iFreq) = ", outputTimeStepUpdate(iFreq)
+  !   print*, "   stepCounter = ", stepCounter
+  !   return
+  ! endif
+end subroutine
+
 ! **************************************************************************************
 ! public subroutine writeBasin: write basin-average variables
 ! **************************************************************************************
@@ -447,8 +507,8 @@ subroutine writeBasin(ncid,iGRU,outputTimestep,iStep,meta,stat,dat,map,err,messa
       ! process error code
       if (err.ne.0) message=trim(message)//trim(meta(iVar)%varName)//'_'//trim(get_statName(iStat))
       call netcdf_err(err,message); if (err/=0) return
-
     end do ! iVar
+    outputTimeStep(iFreq) = outputTimeStep(iFreq) + 1
   end do ! iFreq
 
 end subroutine writeBasin
@@ -503,258 +563,5 @@ end do ! iFreq
 
 end subroutine writeTime
 
-    ! *********************************************************************************************************
-    ! public subroutine printRestartFile: print a re-start file
-    ! *********************************************************************************************************
-    subroutine writeRestart(filename,         & ! intent(in): name of restart file
-                            nGRU,             & ! intent(in): number of GRUs
-                            nHRU,             & ! intent(in): number of HRUs
-                            prog_meta,        & ! intent(in): prognostics metadata
-                            prog_data,        & ! intent(in): prognostics data
-                            bvar_meta,        & ! intent(in): basin (gru) variable metadata
-                            bvar_data,        & ! intent(in): basin (gru) variable data
-                            maxLayers,        & ! intent(in): maximum number of layers
-                            maxSnowLayers,    & ! intent(in): maximum number of snow layers
-                            indx_meta,        & ! intent(in): index metadata
-                            indx_data,        & ! intent(in): index data
-                            err,message)        ! intent(out): error control
-    ! --------------------------------------------------------------------------------------------------------
-    ! --------------------------------------------------------------------------------------------------------
-    ! access the derived types to define the data structures
-    USE data_types,only:var_info               ! metadata
-    ! access named variables defining elements in the data structures
-    USE var_lookup,only:iLookINDEX             ! named variables for structure elements
-    USE var_lookup,only:iLookVarType           ! named variables for structure elements
-    USE var_lookup,only:iLookBVAR              ! named variables for structure elements
-    ! constants
-    USE globalData,only:gru_struc              ! gru-hru mapping structures
-    ! external routines
-    USE netcdf_util_module,only:nc_file_close  ! close netcdf file
-    USE netcdf_util_module,only:nc_file_open   ! open netcdf file
-    USE globalData,only:nTimeDelay             ! number of timesteps in the time delay histogram
-    
-    implicit none
-    ! --------------------------------------------------------------------------------------------------------
-    ! input
-    character(len=256),intent(in)      :: filename      ! name of the restart file
-    integer(i4b),intent(in)            :: nGRU          ! number of GRUs
-    integer(i4b),intent(in)            :: nHRU          ! number of HRUs
-    type(var_info),intent(in)          :: prog_meta(:)  ! prognostic variable metadata
-    type(gru_hru_doubleVec),intent(in) :: prog_data     ! prognostic vars
-    type(var_info),intent(in)          :: bvar_meta(:)  ! basin variable metadata
-    type(gru_doubleVec),intent(in)     :: bvar_data     ! basin variables
-    type(var_info),intent(in)          :: indx_meta(:)  ! metadata
-    type(gru_hru_intVec),intent(in)    :: indx_data     ! indexing vars
-    ! output: error control
-    integer(i4b),intent(out)           :: err           ! error code
-    character(*),intent(out)           :: message       ! error message
-    ! --------------------------------------------------------------------------------------------------------
-    ! dummy variables
-    integer(i4b), intent(in)           :: maxLayers     ! maximum number of total layers
-    integer(i4b), intent(in)           :: maxSnowLayers ! maximum number of snow layers
-
-    ! local variables
-    integer(i4b)                       :: ncid          ! netcdf file id
-    integer(i4b),allocatable           :: ncVarID(:)    ! netcdf variable id
-    integer(i4b)                       :: ncSnowID      ! index variable id
-    integer(i4b)                       :: ncSoilID      ! index variable id
-
-    integer(i4b)                       :: nSoil         ! number of soil layers
-    integer(i4b)                       :: nSnow         ! number of snow layers
-    integer(i4b)                       :: maxSnow       ! maximum number of snow layers
-    integer(i4b)                       :: maxSoil       ! maximum number of soil layers
-    integer(i4b)                       :: nLayers       ! number of total layers
-    integer(i4b),parameter             :: nSpectral=2   ! number of spectal bands
-    integer(i4b),parameter             :: nScalar=1     ! size of a scalar
-    integer(i4b)                       :: nProgVars     ! number of prognostic variables written to state file
-
-    integer(i4b)                       :: hruDimID      ! variable dimension ID
-    integer(i4b)                       :: gruDimID      ! variable dimension ID
-    integer(i4b)                       :: tdhDimID      ! variable dimension ID
-    integer(i4b)                       :: scalDimID     ! variable dimension ID
-    integer(i4b)                       :: specDimID     ! variable dimension ID
-    integer(i4b)                       :: midSnowDimID  ! variable dimension ID
-    integer(i4b)                       :: midSoilDimID  ! variable dimension ID
-    integer(i4b)                       :: midTotoDimID  ! variable dimension ID
-    integer(i4b)                       :: ifcSnowDimID  ! variable dimension ID
-    integer(i4b)                       :: ifcSoilDimID  ! variable dimension ID
-    integer(i4b)                       :: ifcTotoDimID  ! variable dimension ID
-
-    character(len=32),parameter        :: hruDimName    ='hru'      ! dimension name for HRUs
-    character(len=32),parameter        :: gruDimName    ='gru'      ! dimension name for GRUs
-    character(len=32),parameter        :: tdhDimName    ='tdh'      ! dimension name for time-delay basin variables
-    character(len=32),parameter        :: scalDimName   ='scalarv'  ! dimension name for scalar data
-    character(len=32),parameter        :: specDimName   ='spectral' ! dimension name for spectral bands
-    character(len=32),parameter        :: midSnowDimName='midSnow'  ! dimension name for snow-only layers
-    character(len=32),parameter        :: midSoilDimName='midSoil'  ! dimension name for soil-only layers
-    character(len=32),parameter        :: midTotoDimName='midToto'  ! dimension name for layered varaiables
-    character(len=32),parameter        :: ifcSnowDimName='ifcSnow'  ! dimension name for snow-only layers
-    character(len=32),parameter        :: ifcSoilDimName='ifcSoil'  ! dimension name for soil-only layers
-    character(len=32),parameter        :: ifcTotoDimName='ifcToto'  ! dimension name for layered variables
-
-    integer(i4b)                       :: cHRU          ! count of HRUs
-    integer(i4b)                       :: iHRU          ! index of HRUs
-    integer(i4b)                       :: iGRU          ! index of GRUs
-    integer(i4b)                       :: iVar          ! variable index
-    logical(lgt)                       :: okLength      ! flag to check if the vector length is OK
-    character(len=256)                 :: cmessage      ! downstream error message
-    ! --------------------------------------------------------------------------------------------------------
-
-    ! initialize error control
-    err=0; message='writeRestart/'
-
-    ! size of prognostic variable vector
-    nProgVars = size(prog_meta)
-    allocate(ncVarID(nProgVars+1))     ! include 1 additional basin variable in ID array (possibly more later)
-
-    ! maximum number of soil layers
-    maxSoil = gru_struc(1)%hruInfo(1)%nSoil
-
-    ! maximum number of snow layers
-    maxSnow = maxSnowLayers
-    
-    ! create file
-    err = nf90_create(trim(filename),nf90_classic_model,ncid)
-    message='iCreate[create]'; call netcdf_err(err,message); if(err/=0)return
-
-    ! define dimensions
-                err = nf90_def_dim(ncid,trim(hruDimName)    ,nHRU       ,    hruDimID); message='iCreate[hru]'     ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(gruDimName)    ,nGRU       ,    gruDimID); message='iCreate[gru]'     ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(tdhDimName)    ,nTimeDelay ,    tdhDimID); message='iCreate[tdh]'     ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(scalDimName)   ,nScalar    ,   scalDimID); message='iCreate[scalar]'  ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(specDimName)   ,nSpectral  ,   specDimID); message='iCreate[spectral]'; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(midSoilDimName),maxSoil    ,midSoilDimID); message='iCreate[ifcSoil]' ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(midTotoDimName),maxLayers  ,midTotoDimID); message='iCreate[midToto]' ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(ifcSoilDimName),maxSoil+1  ,ifcSoilDimID); message='iCreate[ifcSoil]' ; call netcdf_err(err,message); if(err/=0)return
-                err = nf90_def_dim(ncid,trim(ifcTotoDimName),maxLayers+1,ifcTotoDimID); message='iCreate[ifcToto]' ; call netcdf_err(err,message); if(err/=0)return
-    if (maxSnow>0) err = nf90_def_dim(ncid,trim(midSnowDimName),maxSnow    ,midSnowDimID); message='iCreate[ifcSnow]' ; call netcdf_err(err,message); if(err/=0)return
-    if (maxSnow>0) err = nf90_def_dim(ncid,trim(ifcSnowDimName),maxSnow+1  ,ifcSnowDimID); message='iCreate[ifcSnow]' ; call netcdf_err(err,message); if(err/=0)return
-    ! re-initialize error control
-    err=0; message='writeRestart/'
-
-    ! define prognostic variables
-    do iVar = 1,nProgVars
-    if (prog_meta(iVar)%varType==iLookvarType%unknown) cycle
-
-    ! define variable
-    select case(prog_meta(iVar)%varType)
-    case(iLookvarType%scalarv);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,  scalDimID /),ncVarID(iVar))
-    case(iLookvarType%wLength);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,  specDimID /),ncVarID(iVar))
-    case(iLookvarType%midSoil);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midSoilDimID/),ncVarID(iVar))
-    case(iLookvarType%midToto);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midTotoDimID/),ncVarID(iVar))
-    case(iLookvarType%ifcSoil);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcSoilDimID/),ncVarID(iVar))
-    case(iLookvarType%ifcToto);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcTotoDimID/),ncVarID(iVar))
-    case(iLookvarType%midSnow); if (maxSnow>0) err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midSnowDimID/),ncVarID(iVar))
-    case(iLookvarType%ifcSnow); if (maxSnow>0) err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcSnowDimID/),ncVarID(iVar))
-    end select
-
-    ! check errors
-    if(err/=0)then
-    message=trim(message)//trim(cmessage)//' [variable '//trim(prog_meta(iVar)%varName)//']'
-    return
-    end if
-
-    ! add parameter description
-    err = nf90_put_att(ncid,ncVarID(iVar),'long_name',trim(prog_meta(iVar)%vardesc))
-    call netcdf_err(err,message)
-
-    ! add parameter units
-    err = nf90_put_att(ncid,ncVarID(iVar),'units',trim(prog_meta(iVar)%varunit))
-    call netcdf_err(err,message)
-
-    end do ! iVar
-    
-    ! define selected basin variables (derived) -- e.g., hillslope routing
-    err = nf90_def_var(ncid, trim(bvar_meta(iLookBVAR%routingRunoffFuture)%varName), nf90_double, (/gruDimID, tdhDimID /), ncVarID(nProgVars+1))
-    err = nf90_put_att(ncid,ncVarID(nProgVars+1),'long_name',trim(bvar_meta(iLookBVAR%routingRunoffFuture)%vardesc));   call netcdf_err(err,message)
-    err = nf90_put_att(ncid,ncVarID(nProgVars+1),'units'    ,trim(bvar_meta(iLookBVAR%routingRunoffFuture)%varunit));   call netcdf_err(err,message)
-
-    ! define index variables - snow
-    err = nf90_def_var(ncid,trim(indx_meta(iLookIndex%nSnow)%varName),nf90_int,(/hruDimID/),ncSnowID); call netcdf_err(err,message)
-    err = nf90_put_att(ncid,ncSnowID,'long_name',trim(indx_meta(iLookIndex%nSnow)%vardesc));           call netcdf_err(err,message)
-    err = nf90_put_att(ncid,ncSnowID,'units'    ,trim(indx_meta(iLookIndex%nSnow)%varunit));           call netcdf_err(err,message)
-
-    ! define index variables - soil
-    err = nf90_def_var(ncid,trim(indx_meta(iLookIndex%nSoil)%varName),nf90_int,(/hruDimID/),ncSoilID); call netcdf_err(err,message)
-    err = nf90_put_att(ncid,ncSoilID,'long_name',trim(indx_meta(iLookIndex%nSoil)%vardesc));           call netcdf_err(err,message)
-    err = nf90_put_att(ncid,ncSoilID,'units'    ,trim(indx_meta(iLookIndex%nSoil)%varunit));           call netcdf_err(err,message)
-
-    ! end definition phase
-    err = nf90_enddef(ncid); call netcdf_err(err,message); if (err/=0) return
-
-    ! write variables
-    do iGRU = 1,nGRU
-    do iHRU = 1,gru_struc(iGRU)%hruCount
-    cHRU = gru_struc(iGRU)%hruInfo(iHRU)%hru_ix
-    do iVar = 1,size(prog_meta)
-
-    ! excape if this variable is not used
-    if (prog_meta(iVar)%varType==iLookvarType%unknown) cycle
-
-    ! actual number of layers
-    nSnow = gru_struc(iGRU)%hruInfo(iHRU)%nSnow
-    nSoil = gru_struc(iGRU)%hruInfo(iHRU)%nSoil
-    nLayers = nSoil + nSnow
-
-    ! check size
-    ! NOTE: this may take time that we do not wish to use
-    okLength=.true.
-    select case (prog_meta(iVar)%varType)
-        case(iLookVarType%scalarv);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nScalar  )
-        case(iLookVarType%wlength);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSpectral)
-        case(iLookVarType%midSoil);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSoil    )
-        case(iLookVarType%midToto);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nLayers  )
-        case(iLookVarType%ifcSoil);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSoil+1  )
-        case(iLookVarType%ifcToto);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nLayers+1)
-        case(iLookVarType%midSnow); if (nSnow>0) okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSnow    )
-        case(iLookVarType%ifcSnow); if (nSnow>0) okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSnow+1  )
-        case default; err=20; message=trim(message)//'unknown var type'; return
-    end select
-
-    ! error check
-    if(.not.okLength)then
-        message=trim(message)//'bad vector length for variable '//trim(prog_meta(iVar)%varname)
-        err=20; return
-    endif
-
-    ! write data
-    select case (prog_meta(iVar)%varType)
-        case(iLookVarType%scalarv);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nScalar  /))
-        case(iLookVarType%wlength);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSpectral/))
-        case(iLookVarType%midSoil);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSoil    /))
-        case(iLookVarType%midToto);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nLayers  /))
-        case(iLookVarType%ifcSoil);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSoil+1  /))
-        case(iLookVarType%ifcToto);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nLayers+1/))
-        case(iLookVarType%midSnow); if (nSnow>0) err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSnow    /))
-        case(iLookVarType%ifcSnow); if (nSnow>0) err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSnow+1  /))
-        case default; err=20; message=trim(message)//'unknown var type'; return
-    end select
-
-    ! error check
-    if (err.ne.0) message=trim(message)//'writing variable:'//trim(prog_meta(iVar)%varName)
-    call netcdf_err(err,message); if (err/=0) return
-    err=0; message='writeRestart/'
-
-    end do ! iVar loop
-
-    ! write index variables
-    err=nf90_put_var(ncid,ncSnowID,(/indx_data%gru(iGRU)%hru(iHRU)%var(iLookIndex%nSnow)%dat/),start=(/cHRU/),count=(/1/))
-    err=nf90_put_var(ncid,ncSoilID,(/indx_data%gru(iGRU)%hru(iHRU)%var(iLookIndex%nSoil)%dat/),start=(/cHRU/),count=(/1/))
-
-    end do ! iHRU loop
-    
-    ! write selected basin variables
-    err=nf90_put_var(ncid,ncVarID(nProgVars+1),(/bvar_data%gru(iGRU)%var(iLookBVAR%routingRunoffFuture)%dat/),  start=(/iGRU/),count=(/1,nTimeDelay/))
-    
-    end do  ! iGRU loop
-
-    ! close file
-    call nc_file_close(ncid,err,cmessage)
-    if(err/=0)then;message=trim(message)//trim(cmessage);return;end if
-
-    ! cleanup
-    deallocate(ncVarID)
-
-    end subroutine writeRestart
-
+   
 end module writeOutput_module
\ No newline at end of file
diff --git a/build/source/netcdf/writeRestart.f90 b/build/source/netcdf/writeRestart.f90
new file mode 100644
index 0000000000000000000000000000000000000000..116851765bc31f63af15d0ff5277d95b920cbb68
--- /dev/null
+++ b/build/source/netcdf/writeRestart.f90
@@ -0,0 +1,253 @@
+ ! *********************************************************************************************************
+    ! public subroutine printRestartFile: print a re-start file
+    ! *********************************************************************************************************
+    subroutine writeRestart(filename,         & ! intent(in): name of restart file
+        nGRU,             & ! intent(in): number of GRUs
+        nHRU,             & ! intent(in): number of HRUs
+        prog_meta,        & ! intent(in): prognostics metadata
+        prog_data,        & ! intent(in): prognostics data
+        bvar_meta,        & ! intent(in): basin (gru) variable metadata
+        bvar_data,        & ! intent(in): basin (gru) variable data
+        maxLayers,        & ! intent(in): maximum number of layers
+        maxSnowLayers,    & ! intent(in): maximum number of snow layers
+        indx_meta,        & ! intent(in): index metadata
+        indx_data,        & ! intent(in): index data
+        err,message)        ! intent(out): error control
+! --------------------------------------------------------------------------------------------------------
+! --------------------------------------------------------------------------------------------------------
+! access the derived types to define the data structures
+USE data_types,only:var_info               ! metadata
+! access named variables defining elements in the data structures
+USE var_lookup,only:iLookINDEX             ! named variables for structure elements
+USE var_lookup,only:iLookVarType           ! named variables for structure elements
+USE var_lookup,only:iLookBVAR              ! named variables for structure elements
+! constants
+USE globalData,only:gru_struc              ! gru-hru mapping structures
+! external routines
+USE netcdf_util_module,only:nc_file_close  ! close netcdf file
+USE netcdf_util_module,only:nc_file_open   ! open netcdf file
+USE globalData,only:nTimeDelay             ! number of timesteps in the time delay histogram
+
+implicit none
+! --------------------------------------------------------------------------------------------------------
+! input
+character(len=256),intent(in)      :: filename      ! name of the restart file
+integer(i4b),intent(in)            :: nGRU          ! number of GRUs
+integer(i4b),intent(in)            :: nHRU          ! number of HRUs
+type(var_info),intent(in)          :: prog_meta(:)  ! prognostic variable metadata
+type(gru_hru_doubleVec),intent(in) :: prog_data     ! prognostic vars
+type(var_info),intent(in)          :: bvar_meta(:)  ! basin variable metadata
+type(gru_doubleVec),intent(in)     :: bvar_data     ! basin variables
+type(var_info),intent(in)          :: indx_meta(:)  ! metadata
+type(gru_hru_intVec),intent(in)    :: indx_data     ! indexing vars
+! output: error control
+integer(i4b),intent(out)           :: err           ! error code
+character(*),intent(out)           :: message       ! error message
+! --------------------------------------------------------------------------------------------------------
+! dummy variables
+integer(i4b), intent(in)           :: maxLayers     ! maximum number of total layers
+integer(i4b), intent(in)           :: maxSnowLayers ! maximum number of snow layers
+
+! local variables
+integer(i4b)                       :: ncid          ! netcdf file id
+integer(i4b),allocatable           :: ncVarID(:)    ! netcdf variable id
+integer(i4b)                       :: ncSnowID      ! index variable id
+integer(i4b)                       :: ncSoilID      ! index variable id
+
+integer(i4b)                       :: nSoil         ! number of soil layers
+integer(i4b)                       :: nSnow         ! number of snow layers
+integer(i4b)                       :: maxSnow       ! maximum number of snow layers
+integer(i4b)                       :: maxSoil       ! maximum number of soil layers
+integer(i4b)                       :: nLayers       ! number of total layers
+integer(i4b),parameter             :: nSpectral=2   ! number of spectal bands
+integer(i4b),parameter             :: nScalar=1     ! size of a scalar
+integer(i4b)                       :: nProgVars     ! number of prognostic variables written to state file
+
+integer(i4b)                       :: hruDimID      ! variable dimension ID
+integer(i4b)                       :: gruDimID      ! variable dimension ID
+integer(i4b)                       :: tdhDimID      ! variable dimension ID
+integer(i4b)                       :: scalDimID     ! variable dimension ID
+integer(i4b)                       :: specDimID     ! variable dimension ID
+integer(i4b)                       :: midSnowDimID  ! variable dimension ID
+integer(i4b)                       :: midSoilDimID  ! variable dimension ID
+integer(i4b)                       :: midTotoDimID  ! variable dimension ID
+integer(i4b)                       :: ifcSnowDimID  ! variable dimension ID
+integer(i4b)                       :: ifcSoilDimID  ! variable dimension ID
+integer(i4b)                       :: ifcTotoDimID  ! variable dimension ID
+
+character(len=32),parameter        :: hruDimName    ='hru'      ! dimension name for HRUs
+character(len=32),parameter        :: gruDimName    ='gru'      ! dimension name for GRUs
+character(len=32),parameter        :: tdhDimName    ='tdh'      ! dimension name for time-delay basin variables
+character(len=32),parameter        :: scalDimName   ='scalarv'  ! dimension name for scalar data
+character(len=32),parameter        :: specDimName   ='spectral' ! dimension name for spectral bands
+character(len=32),parameter        :: midSnowDimName='midSnow'  ! dimension name for snow-only layers
+character(len=32),parameter        :: midSoilDimName='midSoil'  ! dimension name for soil-only layers
+character(len=32),parameter        :: midTotoDimName='midToto'  ! dimension name for layered varaiables
+character(len=32),parameter        :: ifcSnowDimName='ifcSnow'  ! dimension name for snow-only layers
+character(len=32),parameter        :: ifcSoilDimName='ifcSoil'  ! dimension name for soil-only layers
+character(len=32),parameter        :: ifcTotoDimName='ifcToto'  ! dimension name for layered variables
+
+integer(i4b)                       :: cHRU          ! count of HRUs
+integer(i4b)                       :: iHRU          ! index of HRUs
+integer(i4b)                       :: iGRU          ! index of GRUs
+integer(i4b)                       :: iVar          ! variable index
+logical(lgt)                       :: okLength      ! flag to check if the vector length is OK
+character(len=256)                 :: cmessage      ! downstream error message
+! --------------------------------------------------------------------------------------------------------
+
+! initialize error control
+err=0; message='writeRestart/'
+
+! size of prognostic variable vector
+nProgVars = size(prog_meta)
+allocate(ncVarID(nProgVars+1))     ! include 1 additional basin variable in ID array (possibly more later)
+
+! maximum number of soil layers
+maxSoil = gru_struc(1)%hruInfo(1)%nSoil
+
+! maximum number of snow layers
+maxSnow = maxSnowLayers
+
+! create file
+err = nf90_create(trim(filename),nf90_classic_model,ncid)
+message='iCreate[create]'; call netcdf_err(err,message); if(err/=0)return
+
+! define dimensions
+err = nf90_def_dim(ncid,trim(hruDimName)    ,nHRU       ,    hruDimID); message='iCreate[hru]'     ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(gruDimName)    ,nGRU       ,    gruDimID); message='iCreate[gru]'     ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(tdhDimName)    ,nTimeDelay ,    tdhDimID); message='iCreate[tdh]'     ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(scalDimName)   ,nScalar    ,   scalDimID); message='iCreate[scalar]'  ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(specDimName)   ,nSpectral  ,   specDimID); message='iCreate[spectral]'; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(midSoilDimName),maxSoil    ,midSoilDimID); message='iCreate[ifcSoil]' ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(midTotoDimName),maxLayers  ,midTotoDimID); message='iCreate[midToto]' ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(ifcSoilDimName),maxSoil+1  ,ifcSoilDimID); message='iCreate[ifcSoil]' ; call netcdf_err(err,message); if(err/=0)return
+err = nf90_def_dim(ncid,trim(ifcTotoDimName),maxLayers+1,ifcTotoDimID); message='iCreate[ifcToto]' ; call netcdf_err(err,message); if(err/=0)return
+if (maxSnow>0) err = nf90_def_dim(ncid,trim(midSnowDimName),maxSnow    ,midSnowDimID); message='iCreate[ifcSnow]' ; call netcdf_err(err,message); if(err/=0)return
+if (maxSnow>0) err = nf90_def_dim(ncid,trim(ifcSnowDimName),maxSnow+1  ,ifcSnowDimID); message='iCreate[ifcSnow]' ; call netcdf_err(err,message); if(err/=0)return
+! re-initialize error control
+err=0; message='writeRestart/'
+
+! define prognostic variables
+do iVar = 1,nProgVars
+if (prog_meta(iVar)%varType==iLookvarType%unknown) cycle
+
+! define variable
+select case(prog_meta(iVar)%varType)
+case(iLookvarType%scalarv);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,  scalDimID /),ncVarID(iVar))
+case(iLookvarType%wLength);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,  specDimID /),ncVarID(iVar))
+case(iLookvarType%midSoil);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midSoilDimID/),ncVarID(iVar))
+case(iLookvarType%midToto);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midTotoDimID/),ncVarID(iVar))
+case(iLookvarType%ifcSoil);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcSoilDimID/),ncVarID(iVar))
+case(iLookvarType%ifcToto);                err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcTotoDimID/),ncVarID(iVar))
+case(iLookvarType%midSnow); if (maxSnow>0) err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,midSnowDimID/),ncVarID(iVar))
+case(iLookvarType%ifcSnow); if (maxSnow>0) err = nf90_def_var(ncid,trim(prog_meta(iVar)%varname),nf90_double,(/hruDimID,ifcSnowDimID/),ncVarID(iVar))
+end select
+
+! check errors
+if(err/=0)then
+message=trim(message)//trim(cmessage)//' [variable '//trim(prog_meta(iVar)%varName)//']'
+return
+end if
+
+! add parameter description
+err = nf90_put_att(ncid,ncVarID(iVar),'long_name',trim(prog_meta(iVar)%vardesc))
+call netcdf_err(err,message)
+
+! add parameter units
+err = nf90_put_att(ncid,ncVarID(iVar),'units',trim(prog_meta(iVar)%varunit))
+call netcdf_err(err,message)
+
+end do ! iVar
+
+! define selected basin variables (derived) -- e.g., hillslope routing
+err = nf90_def_var(ncid, trim(bvar_meta(iLookBVAR%routingRunoffFuture)%varName), nf90_double, (/gruDimID, tdhDimID /), ncVarID(nProgVars+1))
+err = nf90_put_att(ncid,ncVarID(nProgVars+1),'long_name',trim(bvar_meta(iLookBVAR%routingRunoffFuture)%vardesc));   call netcdf_err(err,message)
+err = nf90_put_att(ncid,ncVarID(nProgVars+1),'units'    ,trim(bvar_meta(iLookBVAR%routingRunoffFuture)%varunit));   call netcdf_err(err,message)
+
+! define index variables - snow
+err = nf90_def_var(ncid,trim(indx_meta(iLookIndex%nSnow)%varName),nf90_int,(/hruDimID/),ncSnowID); call netcdf_err(err,message)
+err = nf90_put_att(ncid,ncSnowID,'long_name',trim(indx_meta(iLookIndex%nSnow)%vardesc));           call netcdf_err(err,message)
+err = nf90_put_att(ncid,ncSnowID,'units'    ,trim(indx_meta(iLookIndex%nSnow)%varunit));           call netcdf_err(err,message)
+
+! define index variables - soil
+err = nf90_def_var(ncid,trim(indx_meta(iLookIndex%nSoil)%varName),nf90_int,(/hruDimID/),ncSoilID); call netcdf_err(err,message)
+err = nf90_put_att(ncid,ncSoilID,'long_name',trim(indx_meta(iLookIndex%nSoil)%vardesc));           call netcdf_err(err,message)
+err = nf90_put_att(ncid,ncSoilID,'units'    ,trim(indx_meta(iLookIndex%nSoil)%varunit));           call netcdf_err(err,message)
+
+! end definition phase
+err = nf90_enddef(ncid); call netcdf_err(err,message); if (err/=0) return
+
+! write variables
+do iGRU = 1,nGRU
+do iHRU = 1,gru_struc(iGRU)%hruCount
+cHRU = gru_struc(iGRU)%hruInfo(iHRU)%hru_ix
+do iVar = 1,size(prog_meta)
+
+! excape if this variable is not used
+if (prog_meta(iVar)%varType==iLookvarType%unknown) cycle
+
+! actual number of layers
+nSnow = gru_struc(iGRU)%hruInfo(iHRU)%nSnow
+nSoil = gru_struc(iGRU)%hruInfo(iHRU)%nSoil
+nLayers = nSoil + nSnow
+
+! check size
+! NOTE: this may take time that we do not wish to use
+okLength=.true.
+select case (prog_meta(iVar)%varType)
+case(iLookVarType%scalarv);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nScalar  )
+case(iLookVarType%wlength);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSpectral)
+case(iLookVarType%midSoil);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSoil    )
+case(iLookVarType%midToto);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nLayers  )
+case(iLookVarType%ifcSoil);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSoil+1  )
+case(iLookVarType%ifcToto);              okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nLayers+1)
+case(iLookVarType%midSnow); if (nSnow>0) okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSnow    )
+case(iLookVarType%ifcSnow); if (nSnow>0) okLength = (size(prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat) == nSnow+1  )
+case default; err=20; message=trim(message)//'unknown var type'; return
+end select
+
+! error check
+if(.not.okLength)then
+message=trim(message)//'bad vector length for variable '//trim(prog_meta(iVar)%varname)
+err=20; return
+endif
+
+! write data
+select case (prog_meta(iVar)%varType)
+case(iLookVarType%scalarv);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nScalar  /))
+case(iLookVarType%wlength);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSpectral/))
+case(iLookVarType%midSoil);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSoil    /))
+case(iLookVarType%midToto);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nLayers  /))
+case(iLookVarType%ifcSoil);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSoil+1  /))
+case(iLookVarType%ifcToto);              err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nLayers+1/))
+case(iLookVarType%midSnow); if (nSnow>0) err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSnow    /))
+case(iLookVarType%ifcSnow); if (nSnow>0) err=nf90_put_var(ncid,ncVarID(iVar),(/prog_data%gru(iGRU)%hru(iHRU)%var(iVar)%dat/),start=(/cHRU,1/),count=(/1,nSnow+1  /))
+case default; err=20; message=trim(message)//'unknown var type'; return
+end select
+
+! error check
+if (err.ne.0) message=trim(message)//'writing variable:'//trim(prog_meta(iVar)%varName)
+call netcdf_err(err,message); if (err/=0) return
+err=0; message='writeRestart/'
+
+end do ! iVar loop
+
+! write index variables
+err=nf90_put_var(ncid,ncSnowID,(/indx_data%gru(iGRU)%hru(iHRU)%var(iLookIndex%nSnow)%dat/),start=(/cHRU/),count=(/1/))
+err=nf90_put_var(ncid,ncSoilID,(/indx_data%gru(iGRU)%hru(iHRU)%var(iLookIndex%nSoil)%dat/),start=(/cHRU/),count=(/1/))
+
+end do ! iHRU loop
+
+! write selected basin variables
+err=nf90_put_var(ncid,ncVarID(nProgVars+1),(/bvar_data%gru(iGRU)%var(iLookBVAR%routingRunoffFuture)%dat/),  start=(/iGRU/),count=(/1,nTimeDelay/))
+
+end do  ! iGRU loop
+
+! close file
+call nc_file_close(ncid,err,cmessage)
+if(err/=0)then;message=trim(message)//trim(cmessage);return;end if
+
+! cleanup
+deallocate(ncVarID)
+
+end subroutine writeRestart
\ No newline at end of file
diff --git a/build/summa_actors.def b/build/summa_actors.def
new file mode 100644
index 0000000000000000000000000000000000000000..e016b25b5d5f8481b68708cfd6a42f28c5762b31
--- /dev/null
+++ b/build/summa_actors.def
@@ -0,0 +1,35 @@
+Bootstrap: docker
+From: ubuntu:20.04
+
+%post
+    apt-get update
+    # need to install locales and set to en_CA.UTF-8
+    # this causes issues if not done
+    apt-get install locales
+    locale-gen en_CA.UTF-8
+    apt-get upgrade -y && \
+    DEBIAN_FRONTEND="noninteractive" apt-get install -y software-properties-common \
+    libnetcdf-dev \
+    libnetcdff-dev \
+    liblapack-dev \
+    libopenblas-dev \
+    cmake \
+    g++ \
+    git \
+    libssl-dev \
+    make \
+    gfortran \
+    python3-pip \
+    gdb &&\
+    apt-get autoclean
+
+    pip3 install xarray
+    pip3 install netcdf4
+    cd /opt
+    git clone https://github.com/actor-framework/actor-framework.git
+    cd actor-framework
+    ./configure
+    cd build
+    make
+    make test
+    make install
diff --git a/utils/Summa_Actors_Settings_backup.json b/utils/Summa_Actors_Settings_backup.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6f659b78b9656388f1096c34e198aaeb978a2ce
--- /dev/null
+++ b/utils/Summa_Actors_Settings_backup.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": true,
+        "host": "simlab03",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100,
+        "num_hru_per_batch": 20
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 20
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/gladwell/SummaActorsSettings/fileManager.txt",
+        "outputCSV": false,
+        "csvPath": ""
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 500
+    }
+  }
\ No newline at end of file
diff --git a/utils/containers/apptainer/summa-actors.def b/utils/containers/apptainer/summa-actors.def
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/utils/containers/docker/Dockerfile b/utils/containers/docker/Dockerfile
new file mode 100755
index 0000000000000000000000000000000000000000..5e8d61e0841e70583d6d6975c917288ec2f1b46d
--- /dev/null
+++ b/utils/containers/docker/Dockerfile
@@ -0,0 +1,42 @@
+FROM ubuntu:20.04
+
+WORKDIR /code
+
+# Get library dependencies
+RUN apt-get update -y && \
+    apt-get upgrade -y && \
+    DEBIAN_FRONTEND="noninteractive" apt-get install -y software-properties-common \
+    libnetcdf-dev \
+    libnetcdff-dev \
+    liblapack-dev \
+    libopenblas-dev \
+    cmake \
+    g++ \
+    git \
+    libssl-dev \
+    make \
+    gfortran \
+    python3-pip \
+    gdb &&\
+    apt-get autoclean
+
+RUN pip3 install xarray
+RUN pip3 install netcdf4
+
+
+# Install the C++ Actor Framework From Git
+RUN git clone https://github.com/actor-framework/actor-framework.git
+WORKDIR /code/actor-framework
+RUN ./configure
+WORKDIR /code/actor-framework/build
+RUN make
+RUN make test
+RUN make install
+# Change workdir for when we attach to this container
+WORKDIR /Summa-Actors
+ENV LD_LIBRARY_PATH=/Summa-Actors/bin:/usr/local/lib
+
+
+
+
+
diff --git a/utils/containers/docker/build_docker_container.sh b/utils/containers/docker/build_docker_container.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1c462c678037556d8ecd856dad64c2fd4c3cc7eb
--- /dev/null
+++ b/utils/containers/docker/build_docker_container.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+docker build -t summa-actors .
\ No newline at end of file
diff --git a/utils/containers/docker/launch_docker_container.sh b/utils/containers/docker/launch_docker_container.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0bf72c7c341e6d854dc6fd4c2e26e67a8b87269e
--- /dev/null
+++ b/utils/containers/docker/launch_docker_container.sh
@@ -0,0 +1,9 @@
+#! /bin/bash
+
+export PROJECT_DIR=/Users/kyleklenk/SUMMA-Projects/Summa-Actors
+export NA_TEST=/home/local/kck540/NA_Summa_Test
+export SUMMA=/Users/kyleklenk/SUMMA-Projects/summa
+docker run -d -it --name SUMMA-Actors --mount type=bind,source=${PROJECT_DIR},target=/Summa-Actors \
+    --mount type=bind,source=${SUMMA},target=/SUMMA summa-actors:latest
+    # --mount type=bind,source=${NA_TEST},target=/NA_Test \
+    # \
\ No newline at end of file
diff --git a/utils/docker/Dockerfile b/utils/docker/Dockerfile
deleted file mode 100644
index d417ca554bf8cf04790b332c572036f34b164588..0000000000000000000000000000000000000000
--- a/utils/docker/Dockerfile
+++ /dev/null
@@ -1,48 +0,0 @@
-#FROM ubuntu:20.04
-FROM linuxbrew/brew:latest
-
-
-# This dockerfile creates the environement for compiling and
-# running SUMMA4CHM. Once started cd into /code/build/source/cppwrap.
-# make lib
-# make
-# export LD_LIBRARY_PATH=/code/build/source/cppwrap:D_LIBRARY_PATH
-# ./program
-
-WORKDIR /code
-
-RUN apt-get update && \
-    DEBIAN_FRONTEND="noninteractive" apt-get install -y software-properties-common \
-    libnetcdf-dev \
-    libnetcdff-dev \
-    liblapack-dev
-
-RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y \
-    && apt-get update \
-    && apt-get install -y gfortran-7
-
-RUN apt update -y \
-    && apt upgrade -y \
-    && DEBIAN_FRONTEND="noninteractive" apt install -y \
-         cmake \
-         g++ \
-         git \
-         libssl-dev \
-         make \
-         gfortran \
-         gdb \
-    && apt-get autoclean
-
-RUN brew install caf
-
-ADD . /code
-
-ENV LD_LIBRARY_PATH=/code/build:/home/linuxbrew/.linuxbrew/Cellar/caf/0.18.5/lib/
-
-# RUN cp -r /home/linuxbrew/.linuxbrew/Cellar/caf/0.18.5/lib/* /usr/local/lib/
-# RUN cp -r /home/linuxbrew/.linuxbrew/Cellar/caf/0.18.*/include/caf /usr/local/include/
-# RUN cp -f /usr/local/lib/libcaf_core.so.0.18.* /code/build/source/cppwrap/
-
-
-
-
diff --git a/utils/docker/docker-compose.yml b/utils/docker/docker-compose.yml
deleted file mode 100644
index 0fac1fa456d7f099627b7a1991f23204f0262973..0000000000000000000000000000000000000000
--- a/utils/docker/docker-compose.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-version: '3.8'
-services:
-  summa_client:
-    build: ./
-    tty: true
-    container_name: summa_server
-    volumes:
-      - ./:/code:Z
-    ports:
-      - 4444:4444
-  summa_client2:
-    build: ./
-    tty: true
-    container_name: summa_client
-    volumes:
-      - ./:/code:Z
-    ports:
-      - 4445:4445
-  # summa_client3:
-  #   build: ./
-  #   tty: true
-  #   container_name: summa_client3
-  #   volumes:
-  #     - ./:/code:Z
-  #   ports:
-  #     - 4446:4446
-  # summa_client4:
-  #   build: ./
-  #   tty: true
-  #   container_name: summa_client4
-  #   volumes:
-  #     - ./:/code:Z
-  #   ports:
-  #     - 4447:4447
diff --git a/utils/laugh_tests/celia1990/config/Summa_Actors_Settings.json b/utils/laugh_tests/celia1990/config/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..78a0b82e249572607220643589ddf2a103dac174
--- /dev/null
+++ b/utils/laugh_tests/celia1990/config/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/celia1990/settings/summa_fileManager_celia1990.txt",
+      "outputCSV": false,
+      "csvPath": "/Summa-Actors/utils/laugh_tests/celia1990/output/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
diff --git a/utils/laugh_tests/celia1990/forcing_data/celia1990_forcing.nc b/utils/laugh_tests/celia1990/forcing_data/celia1990_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..c57e86d96e831e474f8f0166db7b8c16fa6b3719
Binary files /dev/null and b/utils/laugh_tests/celia1990/forcing_data/celia1990_forcing.nc differ
diff --git a/utils/laugh_tests/celia1990/output/runinfo.txt b/utils/laugh_tests/celia1990/output/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d695d143ce23a6957570f7b48b290a5708dfe5dd
--- /dev/null
+++ b/utils/laugh_tests/celia1990/output/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=15 - hh=21 - mi=12 - ss=09.199
diff --git a/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc b/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..d173a6235ac81f1f920965a1ab7d4091db3dcb0a
Binary files /dev/null and b/utils/laugh_tests/celia1990/output/summa-actors_celia1990GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/celia1990/plot_lt_celia1990.ipynb b/utils/laugh_tests/celia1990/plot_lt_celia1990.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..fa005fa31ded1a6e16223235dd0879656e6cf243
--- /dev/null
+++ b/utils/laugh_tests/celia1990/plot_lt_celia1990.ipynb
@@ -0,0 +1,155 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# modules\n",
+    "from pathlib import Path\n",
+    "from datetime import datetime\n",
+    "import xarray as xr # note, also needs netcdf4 library installed\n",
+    "import pandas as pd\n",
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Specify the data locations relative to the notebook\n",
+    "sim_path = Path(\"/home/local/kck540/SUMMA-Projects/Summa-Actors/utils/laugh_tests/celia1990/output\")\n",
+    "sim_name = \"summa-actors_celia1990GRU1-1_timestep.nc\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Specify plotting dimensions\n",
+    "timesteps = [10,32,49]\n",
+    "midToto = 0"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Specify the base time\n",
+    "time_ref = datetime.strptime('2000-01-01 0:00:00', '%Y-%m-%d %H:%M:%S')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n",
+    "# Load the data\n",
+    "ds = xr.open_dataset( sim_path / sim_name ).isel(hru=0, gru=0).load()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Remove the mising data layers\n",
+    "ds = ds.where(ds['mLayerDepth'] != -9999, drop=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Ensure that we can actually read the figure labels\n",
+    "font = {'weight' : 'normal',\n",
+    "        'size'   : 18}\n",
+    "\n",
+    "plt.rc('font', **font)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKsAAAKeCAYAAABqGZisAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAxOAAAMTgF/d4wjAADQhklEQVR4nOzdeXSU5d3/8ffMZF9IIBC2ACEbq4CiIAGRRXGprUutdRehVJQKiG1tax9R+7O1VsEFRBRwt26oKFpEIexCQBRBhJBAgCBrCJA9M/d9//6YZEggZE8my+d1Tk6ue50rMc9zDp9e1/drsyzLQkREREREREREpBGwe3sCIiIiIiIiIiIiJRRWiYiIiIiIiIhIo6GwSkREREREREREGg2FVSIiIiIiIiIi0mgorBIRERERERERkUZDYZWIiIiIiIiIiDQaCqtERERERERERKTR8PH2BBozf39/2rVr5+1piIiIiIiIiIg0G0ePHqWwsPCc1xVWVaBdu3ZkZGR4exoiIiIiIiIiIs1GVFRUhde1DVBERERERERERBoNhVUiIiIiIiIiItJoKKwSEREREREREZFGQ2GViIiIiIiIiIg0GgqrRERERERERESk0VBYJSIiIiIiIiIijYbCKhERERERERERaTR8vD2B5sayLM+XSGVsNpvnS0REREREREQUVtWZ/Px8MjMzycnJUVAl1WKz2QgJCSEiIoLAwEBvT0dERERERETEqxRW1YH8/Hz27dtHeHg40dHR+Pr6entK0oQ4nU5OnjzJvn376Nq1qwIrERERERERadEUVtWBzMxMwsPDad++vbenIk2Qw+EgICAAcP8tRUVFeXlGIiIiIiIiIt6jAuu1ZFkWOTk5hIWFeXsq0sSFhYVpG6mIiIiIiIi0eAqraqmkmLq2/klt+fr6qji/iIiIiIiItHgKq2pJwYLUNf1NiYiIiIiISEumsEpERERERERERBoNhVUiIiIiIiIiItJoNKqwKiMjg3HjxtGpUyf8/f2Jjo5m6tSpZGVlVes9x48fZ+rUqURHR+Pv70+nTp0YN24cGRkZ9TRzERERERERERGpC40mrEpLS2PgwIG8+uqrDBo0iAceeICYmBiee+45hgwZQmZmZpXek5mZyZAhQ3juueeIjY3lgQceYNCgQbz66qsMHDiQ3bt31/NP0nJ9+OGH3H///VxyySW0atUKm83G7bfffs77s7Ozefjhh+nZsycBAQG0bt2aK664gmXLlp3zmT179jBx4kR69uxJUFAQ7du3Z8iQIbz88ssUFRWV+0xNwsu6Ck5FREREREREpHpsViOp5nzFFVewdOlSnn/+ee6//37P+WnTpjFz5kzuueceXnrppUrfc8899/Dyyy8zbdo0nnnmGc/5559/nilTpnDFFVewZMmSKs0pKiqq0tVYhmGQkpJCQkICDoejSu9trgYMGMCWLVsICQkhKiqKHTt2cNttt/HWW2+ddW9WVhbDhg1j+/bt9OnTh8suu4ycnBwWLVrEsWPHmDdvHuPHjy/zzMaNGxk5ciT5+flceeWV9O3bl1OnTvHZZ59x4MABxowZw5IlS7DZbJ5nMjMzSUxMJCUlhVGjRnHRRRexY8cOFi1aRGRkJN988w0xMTFlPictLY3ExESOHDnCtddeS8+ePUlOTiYpKYkePXqwdu1aIiIi6vz3p78lERERERERaQkqzVusRiA1NdUCrOjoaMswjDLXTp06ZQUHB1tBQUFWTk5Ohe/Jzs62AgMDreDgYOvUqVNlrhmGYXXr1s0CrLS0tCrNq3PnzpXe43K5rO3bt1sul6tK72zOli9fbqWkpFimaVpJSUkWYN12223l3jt58mQLsG644QbL6XR6zh8+fNjq0qWLFRgYaO3fv7/MM1dffbUFWK+99lqZ8zk5OVbv3r0twFq5cmWZa7///e8twJo2bVqZ888995wFWFdcccVZcxszZowFWM8//3yZ8w888IAFWPfcc0/lv4wa0N+SiIiIiIiItASV5S2NYhtgUlISAGPGjMFuLzul0NBQhg4dSl5eHuvXr6/wPevXryc/P5+hQ4cSGhpa5prdbueKK64o83lSt0aOHEl8fHyZlU3n8vHHHwPw+OOP4+Pj4zkfGRnJtGnTyM/PZ8GCBWWeKdnC+atf/arM+eDgYEaPHg3A0aNHPedzcnJ48803CQ4O5tFHHy3zzB/+8Ae6devGl19+WWZraFpaGkuXLiU6OppJkyaVeeaxxx4jODiYN998k9zcXM95y7J4/fXXSUxMpF27dgQEBNClSxeuuOIK3nvvvUp/FyIiIiIiIiJyWqMIq3bu3AlAQkJCudfj4+MBSElJaZD3SP07dOgQwFlb8EqfO7N2VZ8+fQD4/PPPy5zPy8tj+fLlBAUFMWTIEM/5moSXNQlOH374YcaOHcuhQ4e46aabmDZtGpdddhkHDhzggw8+qMJvQ0RERERERERK+FR+S/07efIkAGFhYeVeLzl/4sSJen3PjBkzmDFjhuc4Jyenws9raIZpMWdFKuvSMkmMjeDeEXE47JWvYmqM2rZty8GDB9mzZw+9e/cuc61kpVNJ+Fji//2//8e6desYO3Ys77//Pr179+bUqVMsXrwYl8vFhx9+SKdOnTz31yS8rMozS5cuJSUlxbOaa+7cuXTu3Jlt27YRFBRU5v5jx45V/IsQERERERERkTIaRVjVWEybNo1p06Z5jqOiomr9zt+9vpG9mXm1fg/A8dxCjuc6sYBv0jJ5de0e2gT71/q93SKCmHfXRbWfYDX84he/YN68eUyfPp13333XU1D86NGjzJw5E+Cszns9e/Zk48aN3HLLLXz22Wd89tlnAPj6+jJ16lQuvvjiMvfXJLysaeDp6+tbblH0tm3blvseERERERERkaooKirkH+/cxq7CNOL9Y/m/W9/Gz6/2WUBj1ii2AZYEACVBwZlKzoeHhzfIexqrvCKTktaNVvFxU/X444/TpUsXPvzwQwYMGMDUqVOZMGECffr0oU2bNgBnbcP77rvvSExMJD8/n9WrV5Odnc3+/ft5/PHHmTFjBoMHDz7nf/v6dNttt5Genk7v3r3561//ypIlS7wyDxEREREREWl+/vHObXzODn4McPE5O/jHf2/z9pTqXaNYWdWjRw/g3LWkdu3aBZx7a1Zdv6cu1eWKpVnLd/HC8lQKXSb+Pnb+MCqWSSPj6+z9Daljx45s3LiRf/zjHyxevJgXX3yRtm3b8tvf/pYpU6YQHx9PZGSk536Xy8VNN93E0aNH2bBhAx06dAAgJCSEv/zlLxw+fJhnn32WmTNneoqp1yS8rMkzM2fOJCYmhldffZUnn3ySJ598Eh8fH66++mqeeeYZ4uLiqv8LEhEREREREQF2FabhDHCXAHLabOwqSPPyjOpfo1hZNXLkSACWLl2KaZZdLZSdnc3atWsJCgo6a5vXmS6++GICAwNZu3Yt2dnZZa6ZpsnSpUvLfF5Tc++IOCaPjiMxNoLJo+OYeGnTDkHat2/PrFmzSE9Pp6ioiJ9//pkXXniBffv2AXDRRaeDvh07dpCamkqvXr08QVVpJf9Nv/32W8+5moSXNXnG4XAwdepUtmzZwuHDh1m4cCHXX389n376KVdeeSWFhYWV/CZEREREREREyhfvH4uP5d5n5WNZxAfEenlG9a9RhFWxsbGMGTOG9PR0Zs+eXeba9OnTyc3N5Y477iA4ONhzfseOHezYsaPMvSEhIdxxxx3k5uZ6VteUKAlFrrjiinI70DUFDruNSSPjeWfCxUwaGd9ki6tX5o033gDg1ltv9ZwrCXzOVbD86NGjAPj5+XnO1SS8rG1wGhkZyQ033MD777/PqFGjSEtLY9u2bZX/0CIiIiIiIiLl+L9b3+a8PPe/dYcYEfzfLW97eUb1r1GEVQAvvvgikZGRTJ48meuuu46//vWvjBo1ipkzZ5KQkMATTzxR5v5evXrRq1evs97zz3/+k4SEBGbMmMHo0aP561//ynXXXceUKVOIjIw8KwwT7zBNs9xui2+++SZvvPEGiYmJXHfddZ7zffv2JTw8nH379jFv3rwyz5w4cYKnn34awNOhD2oWXlY3OC0sLGTt2rVn/RxOp5Pjx48DnNUhUERERERERKSq/Pz8aV3UHYDbB41v9sXVAWyWZVmV39Yw9u/fzyOPPMKSJUvIzMykY8eOXH/99UyfPp3WrVuXuddmc68qKm/6x48f57HHHuOTTz7h4MGDREREcNVVV/H4449Xq8NfVFQUGRkZFd5jGAYpKSkkJCSU2w2uJfnkk0/45JNPADh06BBffvklMTExXHLJJYC7M15JqJSTk0P79u25/PLLiY2NxW63s3btWr755ht69erF119/TadOncq8//XXX+fuu+/GsixGjx7N+eefT1ZWFp9++ilHjx7l4osvZsWKFfj7n/4/3MzMTBITE0lJSWHUqFEMGjSIn376iUWLFhEZGcm6deuIjS27hDItLY3ExESOHDnCtddeS69evdiwYQNJSUkkJCSwbt06IiIiAHdQ1rp1a+Li4hg4cCDdunWjoKCAr776ip9++olf/epXLFq0qEq/P/0tiYiIiIiIyJmKigq5+5XB/BBiMNwVycw7vmjygVVleUujCqsaG4VV1fPoo4/y2GOPnfN6t27dSE9PB9wrjyZOnMiaNWs8v+P4+Hhuuukmpk6des7VSKtWreLZZ5/lm2++4dixY/j7+9OjRw9+85vfMHXqVAICAs56pibhZVWDU6fTycyZM0lKSuLHH3/kyJEjhIaGEhsby9ixYxk3blyZrYkV0d+SiIiIiIiInOnhV3/N57adGDYbPpbFNbae/OOuD709rVpRWFULCqukIelvSURERERERM5089zz+THA5TnuU+DDu/d858UZ1V5leUujqVklIiIiIiIiIiJldbFH4yheZ+SrboAiIiIiIiIiIuJNQwfOoHeeu273JVZXdQMUERERERERERHvMEyLRd//jGVzr6xq3yoQh93m5VnVP4VVIiIiIiIiIiKN0JwVqRhZT/BToPv4w+ydLPhigncn1QAUVomIiIiIiIiINELr0jLJC/oZw+ZeTeW02diQtd3Ls6p/CqtERERERERERBqhxNgIAvM6YS9VYH1w695enlX9U1glIiIiIiIiItII3Tsijh9zJtGjwATg9rDzGHf1K16eVf1TWCUiIiIiIiIi0gg57DYKDQcxhi8Ad175Ag4fPy/Pqv4prBIRERERERERaYRO5jvJLyok1acIgLeXTMZwFXl5VvVPYZWIiIiIiIiISCP03NcpDG07l13+DgDeOPGDugGKiIiIiIiIiIh3bNh9nPzgnzGLuwEW2dUNUEREREREREREvKRLm0ACc093A/Qz1Q1QRERERERERES8pGfHVqw9dg/dnU4Aft/mAnUDFBERERERERGRhmeYFst3HAEsTADLwublOTUUhVVSp6Kjo7HZbOV+dejQ4az7s7Ozefjhh+nZsycBAQG0bt2aK664gmXLllXp844dO0bHjh2x2WwMGzbsnPdlZGQwbtw4OnXqhL+/P9HR0UydOpWsrKxzPrN9+3ZuuukmIiMjCQgIoEePHkyfPp38/PwqzU1ERERERESkpuasSGXbgZNc0vYl0n19wWZj7vHNLaLAuo+3JyDNT1hYGFOnTj3rfEhISJnjrKwshg0bxvbt2+nTpw8TJ04kJyeHRYsWcdlllzFv3jzGjx9f4Wfdc8895OTkVHhPWloaiYmJHDlyhGuvvZaePXuSnJzMc889x5IlS1i7di0RERFlntmwYQOjRo3C6XRy44030qVLF5YvX87jjz/OsmXLWLZsGf7+/lX7hYiIiIiIiIhU07q0TEwL8oIPYp1RYL25x1UKq6TOhYeH8+ijj1Z636OPPsr27du54YYbeO+99/Dxcf85/vOf/+TCCy/k/vvv54orriAqKqrc59944w0++ugjXnzxRe67775zfs59993HkSNHeP7557n//vs956dNm8bMmTN5+OGHeemllzznDcPg7rvvJi8vj0WLFvGrX/0KANM0uemmm1i4cCEzZ87kL3/5S1V+HSIiIiIiIiLVlhgbwbq0TFrlRmILdAdWfqbF4AgVWBepNx9//DEAjz/+uCeoAoiMjGTatGnk5+ezYMGCcp/dt28fkydPZvz48Vx11VXn/Iy0tDSWLl1KdHQ0kyZNKnPtscceIzg4mDfffJPc3FzP+ZUrV/LTTz8xfPhwT1AFYLfbeeqppwB46aWXsIq7MQAUFRXx/PPPc8EFF9C6dWuCgoKIjo7m2muv5euvv67Gb0VEREREREQEbru4GwDH82+jo8uFj2UxMWKgCqyL1ERhYSFvvfUW//znP3nuuedISkrCMIyz7jt06BAAMTExZ10rOVde7SrLshg7dixhYWHMmDGjwrkkJSUBMGbMGOz2sn/uoaGhDB06lLy8PNavX+85v3z5cgCuvPLKcueVkJDA3r172b17t+f82LFjmTJlCk6nkzvvvJPJkyczfPhwtm7dypIlSyqco4iIiIiIiMiZjpwqBOC6fu1pZ5i08Qliwq9ex+Hj5+WZ1T9tA2xKTAPWzIQ9q6D7cBj2ANgd3p7VWQ4dOsQdd9xR5lz37t159dVXufTSSz3n2rZty8GDB9mzZw+9e5ddxlgSBO3cufOs9z/77LOsWLGCpUuX0qpVK44fP37OuZQ8n5CQUO71+Ph4li5dSkpKCqNHj67yMykpKaSkpBAbG8vJkyd59913GThwIBs2bMDhKPvfJDMz85zzExERERERETmTYVrMXZkGQMbhIxz0cXDClc/Li+5k/C/mNfvASmFVfXvnZsjaUzfvyj0GeZmA5Q6s1s+B4La1f2/r7nDru7V/D3D33XdzySWX0KdPH0JDQ9m9ezezZs3i5Zdf5qqrruKbb76hf//+APziF79g3rx5TJ8+nXfffdcT8hw9epSZM2cCnNWtb/v27fztb39j4sSJXHbZZZXO5+TJk4C76Ht5Ss6fOHGixs/YbDYsy8Lf3/+s1VvAWcXbRURERERERCoyZ0Uqn275GYBD2Qs4GuHAssHc45uxfTGBCb963cszrF/aBtiUOPOAkjpJVvFx4zJ9+nRGjRpF+/btCQoKom/fvrz00kueGlSlC68//vjjdOnShQ8//JABAwYwdepUJkyYQJ8+fWjTpg1AmfDH6XRyxx130LFjR0/tqMagVatW/PKXv2TdunUMGDCAxx9/nKSkJPLyGt9/HxEREREREWn81qVl4jLd//4/GnT8rG6AzZ1WVtW3OlqxBMCqp2HVU+AqBB9/uOSPMPzBunt/PZo4cSLPPPMMq1at8pzr2LEjGzdu5B//+AeLFy/mxRdfpG3btvz2t79lypQpxMfHExkZ6bn/X//6F9999x1JSUmEhIRU6XNLVkGVrJY6U8n58PDwWj3z3nvv8e9//5t33nmH6dOnAxAQEMCNN97I008/Tfv27as0XxEREREREZHE2AjW787EtKBjfhg/Bp4AdQOURmnYAzD8Ieh+qfv7sKnenlGVtWvXDqBM1z2A9u3bM2vWLNLT0ykqKuLnn3/mhRdeYN++fQBcdNFFnns3b96MZVmMGDECm83m+erevTsAa9euxWazlQmRevToAUBKSkq589q1axdQtj5VTZ4JDAzk0UcfJSUlhX379vHWW28xbNgw3nrrLW688cZKfjsiIiIiIiIip907Io72oQH4OmyM6XgjoaZJkEWL6QaolVVNid3hXknVRFZTlVbSba+8zn/leeONNwC49dZbPecuv/xy2rY9u0ZXTk4O7733Hu3bt+eaa64hKCjIc23kyJEALF26FNM0y2wrzM7OZu3atQQFBXHxxRd7zo8aNYonnniCJUuW8Ne//rXMZ+3evZuUlBS6det2zp+lS5cu3Hbbbdxyyy306NGDNWvWkJmZqdpVIiIiIiIiUiUOuw2naXFe5zCu6tmWpzdbdAjt2uxrVZVQWCV15qeffqJr164EBweXOZ+ens4f/vAHAG6//XbPedM0ycvLO2tL35tvvskbb7xBYmIi1113nef8pEmTyv3c9PR03nvvPeLi4pg3b16Za7GxsYwZM4alS5cye/Zs7r//fs+16dOnk5ubyz333FNmzpdeeim9evVi1apVfPrpp/zqV7/yzPehhx4C3NsabcV7ho8ePcqhQ4c477zzynx2bm4uOTk5+Pj44OfXvDs1iIiIiIiISN3JLXRxLKcQu+Vi1+p3yQ61k59zgJe3zGX8eb/DYXdU/pImTGGV1Jn33nuPZ555huHDh9OtWzdCQ0NJS0vj888/p6CggKuvvpo//vGPnvvz8vJo3749l19+ObGxsdjtdtauXcs333xDr169+OCDD8rtrlddL774IomJiUyePJlly5bRq1cvNmzYQFJSEgkJCTzxxBNl7nc4HLz66quMGjWKG2+8kRtvvJGuXbuybNkyNm3axNChQ3nggQc89x84cIDzzz+f8847j379+tGlSxdOnTrF4sWLOXToEJMnTyY0NLTWP4eIiIiIiIi0DM8s3QnAjQULWRb8A/m2VoDB3O/nYLPZmdBvgncnWM8UVkmdGTlyJDt37uS7775j7dq15ObmEh4ezrBhw7jjjju44447PKuRAPz9/bn55ptZs2YNX331FQDx8fE88cQTTJ06tcx2vtqIjY1l06ZNPPLIIyxZsoQvvviCjh07MmXKFKZPn07r1q3Pembw4MFs3LiR6dOns3TpUrKzs+nWrRuPPPIIf/nLX/D39/fcGx0dzWOPPcaKFStISkri2LFjtGnThh49evDkk09y880318nPISIiIiIiIi3DN7szAUi0/8hrQX5Q0g0Qgw0HNzT7sMpmWZbl7Uk0VlFRUWRkZFR4j2EYpKSkkJCQgMPRvJfhSf3S35KIiIiIiIgAjHttI8t3HOE+xye0iviS2W1aubsB4mDi+ZOafFhVWd6iboAiIiIiIiIiIo1Itwj3TqONne7kF1ZXAFrb/Jg44F7G9R3nzak1CIVVIiIiIiIiIiKNhGFarEo5CsDwhLZEhtjBZsNms9FStsYprBIRERERERERaSTmrEhl99FcAJyrZjI/Lx2A42Yhc7+fw4JtC7w4u4ahsEpEREREREREpJFYl5bpWUE1iG1sDDzd4KukwHpzp7BKRERERERERKSR6BcV5hkn05cBBYWeYz8cDO442BvTalAKq0REREREREREGokRCZEAREcEETByGjfb3OFVpCOoxRRY9/H2BERERERERERExG1fVh4AD/+iN5f3bs+htDbAccYk3MCE/vd4d3INRCurREREREREREQaAcO0WPhtBgDrUo9huFwUnvoZgGUpH/PylrkYpuHNKTYIrawSEREREREREWkE5qxIZWP6cQDeSd7HmONvsdqnCAjgoJHL3O/nYLPZmdBvgncnWs+0skpEREREREREpBFYl5aJWdwKsNBlEvrzOr4PUDdAERERERERERHxgiExEZ6xv4+d7E6J9ClUN0AREREREREREfGC6y/oDECHVv5MHh3HoNse5xe5+QB09QltMd0AFVaJiIiIiIiIiHiZYVo8//UuAHp3bMXES+NwWC6c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d32/J02a5HZu8eLFhiRj6NChbsfnzJljSDJ+9atfGQUFBW7nSv95vP76627H9+7dW+m97Xa7cd999xmSjO+++87t3HXXXefxPgsXLnTVO2fOnDN+PsOo/vtvGGXf6759+xonT550HU9LSzMCAwON6OhoIz4+3sjIyHCdO3nypNGsWTOjefPmhtVqrfa+AACg7rENEAAA1ItJkyZp0qRJevrpp3X77bfrhhtukGEYGjdunC688EK3ax966CH17t3b7djx48f1wQcfqG/fvvrTn/7kdi4kJEQvv/yyDMPQ/Pnz3c4FBgYqICCgUj3NmzevdCw0NLTSsZiYGJnNtfNXpsmTJ1d636+++kppaWl6/PHHddVVV7mda9Omjf70pz/p8OHDWrZsWY3f58ILL9Rf//pXt2PXX3+9LrjgAiUnJ7sdnzp1qiwWi2bPnl3p8z/zzDNq1qyZPvzwQ7fjCQkJld7TbDZr7NixkqRvvvnGdTwjI0NLly5V+/bt9dhjj7m9ZtiwYZU+c2156aWXFB0d7XreoUMHDRo0SNnZ2XrmmWfUtm1b17no6GjdcsstOnbsmA4ePFgn9QAAgJpjGyAAAKgXzz33nCTnlr/o6GhdccUVGj16tEaMGFHp2sTExErHNm3aJLvd7rEnlCRXX6mffvrJdeyee+7RG2+8oYsuukh33HGHrrrqKg0YMEBRUVFur73zzjs1depUDR8+XLfffruuvfZaXX755R5DmfPh6XNt2LBBknPrnqfPlZqaKsn5uWq6FbBXr14eA7p27dq53k9y9v/avn27mjdvrtdff93jvYKDg92+p5IzOPznP/+pRYsWad++fcrPz3c7Xz7w2bZtmyRp0KBBHmtKSkrSqlWravS5zkbfvn0rHWvTpo0kqU+fPpXOlYZXGRkZlcJTAABQvwirAABAvTBO96eqidatW1c6dvz4cUnO0Kq6puN5eXmux6+99po6dOigOXPm6KWXXtJLL70ki8WiG2+8Ua+++qo6duwoyRkirVmzRi+88II++eQTV8+lLl26aOLEifrtb39b49rP9XN9/PHH1b62/Oc6k/IrisqzWCxuTcRPnjwpwzB09OhRV5h4JtnZ2brsssuUnp6uxMRE3XfffWratKksFouys7M1depUt6bspf3GWrVq5fF+nr4ntaFiICnJ1XerunPlm+kDAADvIKwCAAA+p2LDdaksYHjyySc1ZcqUGt0nICBA48aN07hx45SVlaW1a9fq3//+tz7++GPt3LlTO3fuVHBwsCRpwIAB+vLLL1VcXKwtW7Zo8eLFeuONN3T33XerRYsWuvbaayXJtSXQZrNVer/s7Oxz/lyff/65br311hp9rtpS+t69e/fW1q1ba/Sad999V+np6Zo4cWKllWAbNmzQ1KlTPb7HkSNHPN7v8OHDZ1k1AADwd/SsAgAADUJiYqLMZrPWrFlzTq9v2bKlbrvtNv3nP//R1VdfrbS0NKWkpFS6Ljg4WAMHDtTzzz+vadOmSXIGSaViYmIkSb/88kul127evPms6+rfv78knfPnOh8RERG6+OKLtXPnTp04caJGr9m7d68k52TDijxt5yvtPbZ27VrZ7fZK51euXHkWFQMAgMaAsAoAADQILVu21D333KPNmzdr8uTJHoOPtLQ0paenS5KKi4u1bt26StdYrVZXMBMWFiZJWr9+vQoLCytdW7oaqPQ6qazv1DvvvON27Q8//FBpVVFNDBs2TAkJCZo+fboWLVrk8ZoNGzaooKDgrO9dE+PHj1dJSYlGjRrlcWXYyZMn3VZdxcfHS6ocMm3btk0vvvhipdfHxcXpuuuuU3p6ut588023c59//nmd9KsCAAANG9sAAQBAg/Hmm28qNTVVzz77rObNm6dBgwapVatWOnTokH766Sdt2rRJH330kdq3b6/CwkINGjRIHTt2VJ8+fXThhReqqKhIS5cu1U8//aRbb71V3bp1kyT94x//0PLly3XFFVeoffv2ioiI0M6dO/X1118rJiZGDz30kKuGYcOGqVOnTvroo4+UkZGhfv366eeff9bnn3+uYcOG6T//+c9ZfabAwEB9+umnuv7663XTTTdp4MCB6tWrl8LCwvTLL79o06ZN2rdvnzIzM91Cs9oyatQobdmyRTNmzFBCQoJrauCJEyeUnp6u1atXa+TIkZo5c6Yk6b777tM///lPjRs3TitWrFCnTp2UmpqqL7/8UrfddpsWLFhQ6T2mT5+uAQMGaNy4cVqyZIl69uypvXv36rPPPtMtt9yiL774otY/FwAAaLgIqwAAQIPRpEkTrVq1Sm+//bbmz5+v//73vyoqKlKrVq3UqVMnvfbaa7ruuuskSeHh4Xr55Ze1YsUKrV+/XgsXLlRkZKQSEhL0r3/9S6NGjXLd95FHHlFMTIw2btyotWvXymazKS4uTo888oj+8Ic/uE2HCwkJ0bJly/TUU09p6dKl2rRpky655BLNnz9fTZs2PeuwSpJ69Oih7du3a8qUKfryyy81Z84cmc1mxcbGqnfv3nruuefUvHnz8/8GVmH69OkaOnSoZs6cqW+//VbZ2dlq2rSpLrjgAv3xj390m9jYpk0brVmzRn/5y1+0du1affPNN+ratatmzJiha6+91mNY1alTJ3333Xf6y1/+om+//VYrV65Ujx49tHDhQh09epSwCgAAuDEZZzOaBwAAAPCiBx54QO+9957S09NdWxLrQ1JSklatWnVWUy0BAMC5oWcVAAAAGpz27dvLZDLppZdeqrP3OHbsmEwmk0wmE721AACoR2wDBAAAQIMxfPhwtxVVgwYNqrP3CgsL08SJE+vs/gAAwDO2AQIAAAAAAMBnsA0QAAAAAAAAPoOwCgAAAAAAAD6DsAoAAAAAAAA+g7AKAAAAAAAAPoOwCgAAAAAAAD6DsAoAAAAAAAA+g7AKAAAAAAAAPuP/AbJu9nMtNP2PAAAAAElFTkSuQmCC",
+      "text/plain": [
+       "<Figure size 1440x800 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "# Open a figure\n",
+    "fig = plt.figure(figsize=(18, 10), dpi= 80, facecolor='w', edgecolor='k');\n",
+    "\n",
+    "# Plot the data\n",
+    "for time in timesteps:\n",
+    "    \n",
+    "    # legend label\n",
+    "    time_cur = ds['time'][time].dt.round('s') # Extract time @ timestep, rounded to the nearest second\n",
+    "    time_dif = pd.to_datetime(time_cur.data) - time_ref # time_cur is a datetime64 object, needs to be datetime\n",
+    "    lbl = str(round(time_dif.total_seconds())) + 's' # round() gets rid of the decimal 0 that's added by default\n",
+    "    \n",
+    "    # data\n",
+    "    plt.plot(ds['mLayerMatricHead'].isel(time=time,midToto=midToto), ds['mLayerHeight'].isel(time=time), \\\n",
+    "             marker='.', label=lbl);\n",
+    "\n",
+    "# Make sure that increasing depth points downward\n",
+    "plt.gca().invert_yaxis()\n",
+    "\n",
+    "# Labels\n",
+    "plt.xlabel('Pressure head [m]'); # note, ';' supresses output from the Text object that is created for the labels\n",
+    "plt.ylabel('Depth [m]');\n",
+    "plt.legend();\n",
+    "\n",
+    "# Save the figure\n",
+    "plt.savefig('summa-actors-lt1_celia1990.png');"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.8.10 64-bit",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.10"
+  },
+  "orig_nbformat": 4,
+  "vscode": {
+   "interpreter": {
+    "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/utils/laugh_tests/celia1990/run_test_summa.sh b/utils/laugh_tests/celia1990/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..640d339d8efb3825199c6c2350bd85b757d7fec5
--- /dev/null
+++ b/utils/laugh_tests/celia1990/run_test_summa.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/celia1990/settings/summa_fileManager_verify_celia1990.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/celia1990/run_test_summa_actors.sh b/utils/laugh_tests/celia1990/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e35394c5c6070ada3e8277323ff715126d038326
--- /dev/null
+++ b/utils/laugh_tests/celia1990/run_test_summa_actors.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/celia1990/config
\ No newline at end of file
diff --git a/utils/laugh_tests/celia1990/settings/GENPARM.TBL b/utils/laugh_tests/celia1990/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/celia1990/settings/MPTABLE.TBL b/utils/laugh_tests/celia1990/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/celia1990/settings/Model_Output.txt b/utils/laugh_tests/celia1990/settings/Model_Output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..19ed37469f9d3860b3414756a551cb850ab9955b
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/Model_Output.txt
@@ -0,0 +1,34 @@
+! ---------
+! model variables
+! ---------
+time                      | 1
+nSnow                     | 1
+nSoil                     | 1
+nLayers                   | 1
+mLayerHeight              | 1
+iLayerLiqFluxSoil         | 1
+mLayerDepth               | 1
+mLayerVolFracIce          | 1
+mLayerVolFracLiq          | 1
+mLayerMatricHead          | 1
+mLayerTranspire           | 1
+mLayerBaseflow            | 1
+mLayerCompress            | 1
+iLayerNrgFlux             | 1
+basin__TotalArea          | 1
+scalarGroundEvaporation   | 1
+scalarSoilBaseflow        | 1
+scalarSoilDrainage        | 1
+scalarInfiltration        | 1
+scalarSnowDrainage        | 1
+scalarSnowSublimation     | 1
+scalarThroughfallRain     | 1
+scalarThroughfallSnow     | 1
+scalarRainfall            | 1
+scalarSnowfall            | 1
+scalarRainPlusMelt        | 1
+fieldCapacity             | 1
+pptrate                   | 1
+averageRoutedRunoff       | 1
+scalarSWE                 | 1
+fieldCapacity             | 1
diff --git a/utils/laugh_tests/celia1990/settings/SOILPARM.TBL b/utils/laugh_tests/celia1990/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/celia1990/settings/VEGPARM.TBL b/utils/laugh_tests/celia1990/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/celia1990/settings/summa_fileManager_celia1990.txt b/utils/laugh_tests/celia1990/settings/summa_fileManager_celia1990.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d2d4772244827a66b572b8996bb5933c8a1de4e5
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_fileManager_celia1990.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/celia1990/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/celia1990/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/celia1990/output/' ! 
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '2000-01-01' 
+decisionsFile        'summa_zDecisions_celia1990.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_celia1990.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_celia1990.nc' !  initial_cond
+outFilePrefix        'summa-actors_celia1990' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/celia1990/settings/summa_fileManager_verify_celia1990.txt b/utils/laugh_tests/celia1990/settings/summa_fileManager_verify_celia1990.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a874ea822564327fc92160bbf1601cdde2b6d0a2
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_fileManager_verify_celia1990.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/celia1990/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/celia1990/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/celia1990/verification_data/' ! 
+decisionsFile        'summa_zDecisions_celia1990.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_celia1990.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_celia1990.nc' !  initial_cond
+outFilePrefix        'summa_celia1990' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/celia1990/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/celia1990/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/celia1990/settings/summa_zDecisions_celia1990.txt b/utils/laugh_tests/celia1990/settings/summa_zDecisions_celia1990.txt
new file mode 100644
index 0000000000000000000000000000000000000000..92822de7e65f51e81711c5c982a52914eee16fe8
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_zDecisions_celia1990.txt
@@ -0,0 +1,168 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA         ! (03) soil-category dateset
+vegeParTbl                      USGS            ! (04) vegetation category dataset
+soilStress                      NoahType        ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry       ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive        ! (07) choice of numerical method
+fDerivMeth                      analytic        ! (08) method used to calculate flux derivatives
+LAI_method                      monTable        ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform        ! (10) form of Richard's equation
+groundwatr                      noXplict        ! (11) choice of groundwater parameterization
+hc_profile                      constant        ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      zeroFlux        ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux        ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      presHead        ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      presHead        ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988    ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      difTrans        ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow       ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy  ! (20) choice of wind profile through the canopy
+astability                      louisinv        ! (21) choice of stability function
+canopySrad                      CLM_2stream     ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay        ! (23) choice of albedo representation
+compaction                      anderson        ! (24) choice of compaction routine
+snowLayers                      CLM_2010        ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      jrdn1991        ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      mixConstit      ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn     ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay        ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1988     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:18 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/celia1990/summa_fileManager_celia1990.txt
diff --git a/utils/laugh_tests/celia1990/settings/summa_zForcingFileList.txt b/utils/laugh_tests/celia1990/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d124336ff86e442997850472484b0554eedcc58b
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'celia1990_forcing.nc'
diff --git a/utils/laugh_tests/celia1990/settings/summa_zForcingInfo_celia1990.txt b/utils/laugh_tests/celia1990/settings/summa_zForcingInfo_celia1990.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6163dd00baaa63551343468719b645529ad92479
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_zForcingInfo_celia1990.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | celia1990_forcing.txt  ! name of the forcing data file (must be in single quotes)
+ncols          | 13                     ! number of columns in the forcing file
+iyyy           | 1                      ! year
+im             | 2                      ! month
+id             | 3                      ! day
+ih             | 4                      ! hour
+imin           | 5                      ! minute
+pptrate        | 7                      ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                      ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                      ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                     ! air temperature                 (K)
+windspd        | 11                     ! windspeed                       (m/s)
+airpres        | 12                     ! pressure                        (Pa)
+spechum        | 13                     ! specific humidity               (g/g)
+data_step      | 1800                   ! length of time step (seconds)
diff --git a/utils/laugh_tests/celia1990/settings/summa_zInitialCond_celia1990.nc b/utils/laugh_tests/celia1990/settings/summa_zInitialCond_celia1990.nc
new file mode 100644
index 0000000000000000000000000000000000000000..0dbc2e3ec3eeaa5b94ccde92cc300f96a04dba50
Binary files /dev/null and b/utils/laugh_tests/celia1990/settings/summa_zInitialCond_celia1990.nc differ
diff --git a/utils/laugh_tests/celia1990/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/celia1990/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..6d6d398ea65ee01cae90ce82c2e6f33dd8e845cf
Binary files /dev/null and b/utils/laugh_tests/celia1990/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/celia1990/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/celia1990/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..92bbfe8d80a1d20f699af4c2f62abbbd670533e2
--- /dev/null
+++ b/utils/laugh_tests/celia1990/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |      -0.7500 |    -100.0000 |      -0.0100
+lowerBoundHead            |     -10.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.1600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0600 |       0.0100 |       0.1000
+k_snow                    |       0.0150 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       1.0000 |       0.0100 |       3.0000
+summerLAI                 |       3.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       0.5000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.0750 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |      20.0000 |       0.0500 |     100.0000
+heightCanopyBottom        |       2.0000 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      10.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       0.0000 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |       5.5000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.2000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.4010 |       0.3000 |       0.6000
+theta_sat                 |       0.5500 |       0.3000 |       0.6000
+theta_res                 |       0.1390 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.8400 |      -1.0000 |      -0.0100
+vGn_n                     |       1.3000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    |      7.5d-06 |       1.d-07 |     100.d-07
+k_macropore               |      1.0d-03 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       2.5000 |       0.1000 |     100.0000
+compactedDepth            |       1.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |      50.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-09 |       1.d-05 |       1.d-07
+f_impede                  |       2.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       1.0000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |     100.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-6 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-6 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:18 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/celia1990/summa_fileManager_celia1990.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/celia1990/settings/summa_zParamTrial_celia1990.nc b/utils/laugh_tests/celia1990/settings/summa_zParamTrial_celia1990.nc
new file mode 100644
index 0000000000000000000000000000000000000000..8c8f7337f8fc90652058803b2880fa642da87f87
Binary files /dev/null and b/utils/laugh_tests/celia1990/settings/summa_zParamTrial_celia1990.nc differ
diff --git a/utils/laugh_tests/celia1990/verification_data/runinfo.txt b/utils/laugh_tests/celia1990/verification_data/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a4397e2edc523fc1a3bb76f702aaaa11af1ddba9
--- /dev/null
+++ b/utils/laugh_tests/celia1990/verification_data/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=15 - hh=02 - mi=49 - ss=51.739
diff --git a/utils/laugh_tests/celia1990/verification_data/summa_celia1990_G1-1_timestep.nc b/utils/laugh_tests/celia1990/verification_data/summa_celia1990_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..e1319892d362595775ea3f6668ad8dd00667cf1e
Binary files /dev/null and b/utils/laugh_tests/celia1990/verification_data/summa_celia1990_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/celia1990/verify_celia.py b/utils/laugh_tests/celia1990/verify_celia.py
new file mode 100644
index 0000000000000000000000000000000000000000..227b7a1f1f0a9e6fa120efe14cc04e4824b13856
--- /dev/null
+++ b/utils/laugh_tests/celia1990/verify_celia.py
@@ -0,0 +1,111 @@
+from os import listdir
+from os.path import isfile, join
+from pathlib import Path
+import xarray as xr
+import numpy as np
+
+numHRU = 1
+
+time = "time" 
+nSnow = "nSnow" 
+nSoil = "nSoil" 
+nLayers = "nLayers" 
+mLayerHeight = "mLayerHeight" 
+iLayerLiqFluxSoil = "iLayerLiqFluxSoil" 
+mLayerDepth = "mLayerDepth" 
+mLayerVolFracIce = "mLayerVolFracIce" 
+mLayerVolFracLiq = "mLayerVolFracLiq" 
+mLayerMatricHead = "mLayerMatricHead" 
+mLayerTranspire = "mLayerTranspire" 
+mLayerBaseflow = "mLayerBaseflow" 
+mLayerCompress = "mLayerCompress" 
+iLayerNrgFlux = "iLayerNrgFlux" 
+basin__TotalArea = "basin__TotalArea" 
+scalarGroundEvaporation = "scalarGroundEvaporation" 
+scalarSoilBaseflow = "scalarSoilBaseflow" 
+scalarSoilDrainage = "scalarSoilDrainage" 
+scalarInfiltration = "scalarInfiltration" 
+scalarSnowDrainage = "scalarSnowDrainage" 
+scalarSnowSublimation = "scalarSnowSublimation" 
+scalarThroughfallRain = "scalarThroughfallRain" 
+scalarThroughfallSnow = "scalarThroughfallSnow" 
+scalarRainfall = "scalarRainfall" 
+scalarSnowfall = "scalarSnowfall" 
+scalarRainPlusMelt = "scalarRainPlusMelt" 
+pptrate = "pptrate" 
+averageRoutedRunoff = "averageRoutedRunoff" 
+scalarSWE = "scalarSWE"
+fieldCapacity = "fieldCapacity"
+
+output_variables = [time, nSnow, nSoil, nLayers, mLayerHeight, iLayerLiqFluxSoil, \
+    mLayerDepth, mLayerVolFracIce, mLayerVolFracLiq, mLayerMatricHead, mLayerTranspire, \
+    mLayerBaseflow, mLayerCompress, iLayerNrgFlux, basin__TotalArea, scalarGroundEvaporation, \
+    scalarSoilBaseflow, scalarSoilDrainage, scalarInfiltration, scalarSnowDrainage, \
+    scalarSnowSublimation, scalarThroughfallRain, scalarThroughfallSnow, scalarRainfall, \
+    scalarSnowfall, scalarRainPlusMelt, pptrate, averageRoutedRunoff, \
+    scalarSWE, fieldCapacity]
+
+# find the output files
+verified_data_path = Path("./verification_data/summa_celia1990_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/summa-actors_celia1990GRU1-1_timestep.nc")
+    
+try:
+    verified_dataset = xr.open_dataset(verified_data_path)
+    to_compare_dataset = xr.open_dataset(data_to_compare_path)
+except FileNotFoundError:
+    print("Check the variables \'verified_data_path\' and \'data_to_compare_path\'. They may not point to the correct output files or the output filenames may have changed.")
+    exit()
+
+# Get the HRUs from the dataset into a list
+for iHRU in range(0, numHRU):
+    verified_hru = verified_dataset.isel(hru=iHRU).copy()
+    hru_to_compare = to_compare_dataset.isel(hru=iHRU).copy()
+
+    for var in output_variables:
+        try:
+            if len(verified_hru[var].values) != len(hru_to_compare[var].values):
+                print("ERROR: output variable", var, "does not contain the same amount of data")
+                print("     verified_hru = ", len(verified_hru[var].values))
+                print("     hru_to_compare = ", len(hru_to_compare[var].values))
+            
+            verified_data = []
+            to_verify_data = []
+            if (verified_hru[var].values.ndim > 1):
+                # 2D output case
+                for list in verified_hru[var].values:
+                    for data in list:
+                        verified_data.append(data)
+                
+                for list in hru_to_compare[var].values:
+                    for data in list:
+                        to_verify_data.append(data)
+
+            else:
+                # 1D output case
+                for data in verified_hru[var].values:
+                    verified_data.append(data)
+                
+                for data in hru_to_compare[var].values:
+                    to_verify_data.append(data)
+
+                                
+            # check length
+            if len(verified_data) != len(to_verify_data):
+                print("ERROR: output variable", var, "does not contain the same amount of data")
+                print("     verified_hru = ", len(verified_data))
+                print("     hru_to_compare = ", len(to_verify_data))
+
+            # check values
+            for elem in range(0, len(verified_data)):
+                if verified_data[elem] != to_verify_data[elem]:
+                    print("variable -",var, "has different values at", elem)
+                    print("     verified_hru = ", verified_data[elem])
+                    print("     hru_to_compare = ", to_verify_data[elem])
+                    break
+                    
+        except TypeError:
+            print("variable - ", var, "Cannot be compared with len")
+            print("     verified_hru = ",verified_hru[var].values)
+            print("     hru_to_compare = ", hru_to_compare[var].values)
+
+
diff --git a/utils/laugh_tests/colbeck1976/config/exp1/Summa_Actors_Settings.json b/utils/laugh_tests/colbeck1976/config/exp1/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..4471c5d259c64404a349f32844b54fcd779504df
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/config/exp1/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp1.txt",
+      "outputCSV": false,
+      "csvPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/output/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
diff --git a/utils/laugh_tests/colbeck1976/config/exp2/Summa_Actors_Settings.json b/utils/laugh_tests/colbeck1976/config/exp2/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..c463fa224e7fbe6e12b5e007df55857c3c601765
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/config/exp2/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp2.txt",
+      "outputCSV": false,
+      "csvPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/output/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
diff --git a/utils/laugh_tests/colbeck1976/config/exp3/Summa_Actors_Settings.json b/utils/laugh_tests/colbeck1976/config/exp3/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..c18a9282d9c2368603b94073b26dd4a4d6463897
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/config/exp3/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp3.txt",
+      "outputCSV": false,
+      "csvPath": "/Summa-Actors/utils/laugh_tests/colbeck1976/output/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
diff --git a/utils/laugh_tests/colbeck1976/forcing_data/colbeck1976_forcing.nc b/utils/laugh_tests/colbeck1976/forcing_data/colbeck1976_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..76f6957b734adcc58ae1956fc67d0d7a621f2e30
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/forcing_data/colbeck1976_forcing.nc differ
diff --git a/utils/laugh_tests/colbeck1976/forcing_data/colbeck_forcing.pro b/utils/laugh_tests/colbeck1976/forcing_data/colbeck_forcing.pro
new file mode 100644
index 0000000000000000000000000000000000000000..bf5fd7f8823c8bc9da07422b6351c07c9412b3d7
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/forcing_data/colbeck_forcing.pro
@@ -0,0 +1,159 @@
+pro colbeck_forcing
+
+; define constants
+Tfreeze = 273.16d
+
+; define parameters
+dt = 60.d ; (time step)
+
+; define plotting parameters
+window, 0, xs=1000, ys=1000, retain=2
+device, decomposed=0
+LOADCT, 39
+!P.BACKGROUND=255
+!P.CHARSIZE=2.5
+!P.COLOR=0
+erase, color=255
+!P.MULTI=[0,1,4]
+
+; define the number of days
+ndays = 3
+
+; define the number of time steps per hour
+nprhr = 3600.d/dt
+
+; define the number of steps per day
+nprdy = 86400.d/dt
+
+; define the number of time steps
+ntime = ndays*nprdy
+
+; define time in seconds
+stime = (dindgen(ntime)+1.d)*dt
+
+; define time in hours
+htime = stime/3600.
+
+; define maximum radiation
+rdmax = 250.d
+
+; define the dayln parameter
+dayln = -0.1
+
+; define radiation index
+radix = cos(2.d*!pi * (htime/24.d) + !pi) + dayln
+
+; define radiation
+swrad = replicate(0.d, ntime)  ;radix*(rdmax / (1.+dayln))
+
+; set negative radiation to zero
+ibad = where(swrad le 0.d, nbad)
+if (nbad gt 0) then swrad[ibad] = 0.d
+
+; make a base plot for solar radiation
+plot, htime, xrange=[0,ntime/nprhr], yrange=[0,1000], xstyle=9, ystyle=1, $
+ ytitle = 'Solar radiation (W m!e-2!n)', xmargin=[10,10], ymargin=[3,2], $
+ xticks=6, /nodata
+plots, [htime[0],htime[ntime-1]], [  0,  0]
+plots, [htime[0],htime[ntime-1]], [250,250]
+
+plots, [24,24], [0,250]
+plots, [48,48], [0,250]
+
+oplot, htime, swrad
+
+; define other forcing variables
+lwrad = 275.d
+awind =   0.d
+atemp = Tfreeze + 10.d
+sphum = 1.d-3
+apres = 101325.d
+
+; define precipitation
+aprcp = replicate(0.d, ntime)
+
+; define time less than 3 hours
+aprcp[where(stime le 10800.d)] = 10.d^(-2.d)
+
+; define time
+atime = stime/86400.d + julday(1,1,2000,0,0,0.d)
+
+; define file
+filename = 'colbeck1976_forcing'
+
+; open NetCDF file for definition
+ncid = ncdf_create(filename+'.nc', /clobber)
+ncdf_control, ncid
+
+; define dimensions in the NetCDF file
+idHRU  = ncdf_dimdef(ncid, 'hru', 1)
+idTime = ncdf_dimdef(ncid, 'time', /unlimited)
+
+; define the hru ID
+ivar_id = ncdf_vardef(ncid, 'hruId', [idHRU], /long) 
+
+; define the latitude and longitude
+ivar_id = ncdf_vardef(ncid, 'latitude', [idHRU], /double)
+ivar_id = ncdf_vardef(ncid, 'longitude', [idHRU], /double)
+
+; define the data step and time
+ivar_id = ncdf_vardef(ncid, 'data_step', /double)
+ivar_id = ncdf_vardef(ncid, 'time', [idTime], /double)
+
+; define the time units
+ncdf_attput, ncid, ivar_id, 'units', "seconds since 1990-01-01 00:00:00", /char
+
+; define forcing variables
+cVar = ['LWRadAtm','SWRadAtm','airpres','airtemp','pptrate','spechum','windspd']
+for ivar=0,n_elements(cVar)-1 do begin
+ ivar_id = ncdf_vardef(ncid, cvar[ivar], [idHRU, idTime], /double)
+endfor
+
+; exit control mode
+ncdf_control, ncid, /endef
+
+; write the metadata
+ncdf_varput, ncid, ncdf_varid(ncid,'hruId'), 1001
+ncdf_varput, ncid, ncdf_varid(ncid,'latitude'), 40.d
+ncdf_varput, ncid, ncdf_varid(ncid,'longitude'), 250.d
+ncdf_varput, ncid, ncdf_varid(ncid,'data_step'), dt
+
+; make a forcing file
+openw, out_unit, filename+'.txt', /get_lun
+
+; loop through time
+for itime=0,ntime-1 do begin
+
+ ; define date
+ caldat, atime[itime], im, id, iyyy, ih, imi, dsec
+
+ ; write time to the NetCDF file
+ ncdf_varput, ncid, ncdf_varid(ncid,'time'), stime[itime], offset=itime, count=1
+
+ ; print synthetic "data" to the netCDF file
+ for ivar=0,n_elements(cVar)-1 do begin
+  ivar_id = ncdf_varid(ncid,cvar[ivar])
+  case cvar[ivar] of
+   'pptrate':  ncdf_varput, ncid, ivar_id, aprcp[itime], offset=[0,itime], count=[1,1]
+   'airtemp':  ncdf_varput, ncid, ivar_id, atemp,        offset=[0,itime], count=[1,1]
+   'airpres':  ncdf_varput, ncid, ivar_id, apres,        offset=[0,itime], count=[1,1]
+   'spechum':  ncdf_varput, ncid, ivar_id, sphum,        offset=[0,itime], count=[1,1]
+   'windspd':  ncdf_varput, ncid, ivar_id, awind,        offset=[0,itime], count=[1,1]
+   'SWRadAtm': ncdf_varput, ncid, ivar_id, swrad[itime], offset=[0,itime], count=[1,1]
+   'LWRadAtm': ncdf_varput, ncid, ivar_id, lwrad,        offset=[0,itime], count=[1,1]
+   else: stop, 'unable to identify variable'
+  endcase
+ endfor  ; looping through variables
+
+ ; print synthetic "data" to the ASCII file
+ printf, out_unit, iyyy, im, id, ih, imi, dsec, aprcp[itime], swrad[itime], lwrad, atemp, awind, apres, sphum, $
+  format='(i4,1x,4(i2,1x),f6.1,1x,e14.4,1x,5(f10.3,1x),e12.3)'
+
+endfor ; looping through time
+
+; free up file unit
+free_lun, out_unit
+ncdf_close, ncid
+
+stop
+end
diff --git a/utils/laugh_tests/colbeck1976/output/colbeck1976-exp1GRU1-1_timestep.nc b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp1GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..5c4b9adb2d00c716208b87546a6e3806fe85208f
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp1GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/output/colbeck1976-exp2GRU1-1_timestep.nc b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp2GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..ce00720f1b5a90c8340bd4de76367f035f977b60
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp2GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/output/colbeck1976-exp3GRU1-1_timestep.nc b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp3GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..cee21d14a88c0a1c36adf2d91b369fcf84eea934
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/output/colbeck1976-exp3GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/output/runinfo.txt b/utils/laugh_tests/colbeck1976/output/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..df17fe35ae4f6704e4a41a3a097c2cc85a370e85
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/output/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=15 - hh=21 - mi=52 - ss=43.015
diff --git a/utils/laugh_tests/colbeck1976/run_test_summa.sh b/utils/laugh_tests/colbeck1976/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f4ed0cce1905d174b2e7642ff4a20f24c8d04444
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/run_test_summa.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp1.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp2.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp3.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/colbeck1976/run_test_summa_actors.sh b/utils/laugh_tests/colbeck1976/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..27be92c0c34b633daae21832d34cf17d39bf416b
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/run_test_summa_actors.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/colbeck1976/config/exp1
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/colbeck1976/config/exp2
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/colbeck1976/config/exp3
diff --git a/utils/laugh_tests/colbeck1976/settings/GENPARM.TBL b/utils/laugh_tests/colbeck1976/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/colbeck1976/settings/MPTABLE.TBL b/utils/laugh_tests/colbeck1976/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/colbeck1976/settings/SOILPARM.TBL b/utils/laugh_tests/colbeck1976/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/colbeck1976/settings/VEGPARM.TBL b/utils/laugh_tests/colbeck1976/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_defineModelOutput.txt b/utils/laugh_tests/colbeck1976/settings/summa_defineModelOutput.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bfca6f739507af8bb97caa0bd26997d2c42758e8
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_defineModelOutput.txt
@@ -0,0 +1,11 @@
+! ---------
+! model variables
+! ---------
+scalarRainfall         | 1
+scalarSnowfall         | 1
+scalarRainPlusMelt     | 1
+mLayerVolFracLiq       | 1
+mLayerVolFracIce       | 1
+iLayerNrgFlux          | 1
+iLayerHeight           | 1
+mLayerDepth            | 1
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp1.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cc2ee6efbcf874861630fb567cb1adc13977ddeb
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp1.txt
@@ -0,0 +1,23 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' ! 
+simStartTime         '1990-01-01 00:01' ! 
+simEndTime           '1990-01-01 10:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/output/' !  OUTPUT_PATH
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01' 
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp1.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp1.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp1' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp1.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp2.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ede30b91a02e43f1acfad1f741e3b71686fc7321
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp2.txt
@@ -0,0 +1,23 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !
+simStartTime         '1990-01-01 00:01' !
+simEndTime           '1990-01-01 10:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/output/' !  OUTPUT_PATH
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01'
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp2.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp2.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp2' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp2.txt
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp3.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5edc0ba40d167ef0d9a16e9678a859636f5f23fe
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_colbeck1976-exp3.txt
@@ -0,0 +1,23 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !
+simStartTime         '1990-01-01 00:01' !
+simEndTime           '1990-01-01 10:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/output/' !  OUTPUT_PATH
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01'
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp3.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp3.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp3' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp3.txt
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp2.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c649253189665863086c5918ac3eefdecd601cd3
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp2.txt
@@ -0,0 +1,21 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !
+simStartTime         '1990-01-01 00:01' !
+simEndTime           '1990-01-01 10:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/verification_data/' !  OUTPUT_PATH
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp2.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp2.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp2' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp2.txt
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp3.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f3fa77602274bdd44da3e7aab80e7e78ae219ccd
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1976-exp3.txt
@@ -0,0 +1,21 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !
+simStartTime         '1990-01-01 00:01' !
+simEndTime           '1990-01-01 10:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/verification_data/' !  OUTPUT_PATH
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp3.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp3.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp3' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp3.txt
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1979-exp1.txt b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1979-exp1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f0621c14aca3d7d6616d8173af398aec3a182348
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_fileManager_verify_colbeck1979-exp1.txt
@@ -0,0 +1,21 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' ! 
+simStartTime         '1990-01-01 00:01' ! 
+simEndTime           '1990-01-01 10:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/colbeck1976/settings/' !  SETNGS_PATH
+forcingPath          '/Summa-Actors/utils/laugh_tests/colbeck1976/forcing_data/' !  INPUT_PATH
+outputPath           '/Summa-Actors/utils/laugh_tests/colbeck1976/verification_data/' !  OUTPUT_PATH
+decisionsFile        'summa_zDecisions_colbeck1976.txt' !  M_DECISIONS      = definition of model decisions
+outputControlFile    'summa_defineModelOutput.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  LOCALPARAM_INFO  = default values and constraints for local model parameters
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  BASINPARAM_INFO  = default values and constraints for basin-average parameters
+attributeFile        'summa_zLocalAttributes.nc' !  LOCAL_ATTRIBUTES = local attributes
+trialParamFile       'summa_zParamTrial_colbeck1976-exp1.nc' !  PARAMETER_TRIAL  = trial values for model parameters
+forcingListFile      'summa_zForcingFileList.txt' !  FORCING_FILELIST = list of files used in each HRU
+initConditionFile    'summa_zInitialCond_colbeck1976-exp1.nc' !  MODEL_INITCOND   = model initial conditions
+outFilePrefix        'colbeck1976-exp1' !  OUTPUT_PREFIX    = prefix for the output file
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp1.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/colbeck1976/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zDecisions_colbeck1976.txt b/utils/laugh_tests/colbeck1976/settings/summa_zDecisions_colbeck1976.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f5ac1fa2017c484c54809ff8a92f921a4af24451
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_zDecisions_colbeck1976.txt
@@ -0,0 +1,170 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA         ! (03) soil-category dateset
+vegeParTbl                      USGS            ! (04) vegetation category dataset
+soilStress                      NoahType        ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry       ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive        ! (07) choice of numerical method
+fDerivMeth                      analytic        ! (08) method used to calculate flux derivatives
+LAI_method                      monTable        ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform        ! (10) form of Richard's equation
+groundwatr                      noXplict        ! (11) choice of groundwater parameterization
+hc_profile                      constant        ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      zeroFlux        ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux        ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      liq_flux        ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      drainage        ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988    ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      difTrans        ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow       ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy  ! (20) choice of wind profile through the canopy
+astability                      louisinv        ! (21) choice of stability function
+canopySrad                      CLM_2stream     ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay        ! (23) choice of albedo representation
+compaction                      anderson        ! (24) choice of compaction routine
+snowLayers                      jrdn1991        ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      smnv2000        ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      mixConstit      ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn     ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay        ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1988     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp1.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp2.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp3.txt
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zForcingFileList.txt b/utils/laugh_tests/colbeck1976/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8a3f73ef9c62fd5227b1f204b25f215fd903aded
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'colbeck1976_forcing.nc'
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zForcingInfo_colbeck1976.txt b/utils/laugh_tests/colbeck1976/settings/summa_zForcingInfo_colbeck1976.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b6d3f15142165983cc8aa9c2a36608f9ebb77c8
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_zForcingInfo_colbeck1976.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | colbeck1976_forcing.txt  ! name of the forcing data file (must be in single quotes)
+ncols          | 13                       ! number of columns in the forcing file
+iyyy           | 1                        ! year
+im             | 2                        ! month
+id             | 3                        ! day
+ih             | 4                        ! hour
+imin           | 5                        ! minute
+pptrate        | 7                        ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                        ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                        ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                       ! air temperature                 (K)
+windspd        | 11                       ! windspeed                       (m/s)
+airpres        | 12                       ! pressure                        (Pa)
+spechum        | 13                       ! specific humidity               (g/g)
+data_step      | 60                       ! length of time step (seconds)
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp1.nc b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp1.nc
new file mode 100644
index 0000000000000000000000000000000000000000..6328ec1c30d23d1b13a6e01c207a86dc273940dc
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp1.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp2.nc b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp2.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9859d7f3847bd47a442074287cac74e3796fd4fd
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp2.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp3.nc b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp3.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9859d7f3847bd47a442074287cac74e3796fd4fd
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zInitialCond_colbeck1976-exp3.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/colbeck1976/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..010c8d745e57d7a4b3ccba3834bc0869f23e9b81
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/colbeck1976/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a9972fc424d7061cc81eb546548c06f009289d95
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |      -0.7500 |    -100.0000 |      -0.0100
+lowerBoundHead            |     -10.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.1600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0600 |       0.0100 |       0.1000
+k_snow                    |       0.0150 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       1.0000 |       0.0100 |       3.0000
+summerLAI                 |       3.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       0.5000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.0750 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |      20.0000 |       0.0500 |     100.0000
+heightCanopyBottom        |       2.0000 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      10.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       0.0000 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |       5.5000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.2000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.4010 |       0.3000 |       0.6000
+theta_sat                 |       0.5500 |       0.3000 |       0.6000
+theta_res                 |       0.1390 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.8400 |      -1.0000 |      -0.0100
+vGn_n                     |       1.3000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    |      7.5d-06 |       1.d-07 |     100.d-07
+k_macropore               |      1.0d-03 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       2.5000 |       0.1000 |     100.0000
+compactedDepth            |       1.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |      50.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-09 |       1.d-05 |       1.d-07
+f_impede                  |       2.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       1.0000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |     100.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-6 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-6 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp1.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp2.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/colbeck1976/summa_fileManager_colbeck1976-exp3.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp1.nc b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp1.nc
new file mode 100644
index 0000000000000000000000000000000000000000..fe66f1b13a4f825edc5398e43ad096e6bd3bee97
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp1.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp2.nc b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp2.nc
new file mode 100644
index 0000000000000000000000000000000000000000..70ccad244580e69de9da40f2aba6fec61bf7be6d
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp2.nc differ
diff --git a/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp3.nc b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp3.nc
new file mode 100644
index 0000000000000000000000000000000000000000..80c48dbdbea74010383403f94c4d543020df597f
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/settings/summa_zParamTrial_colbeck1976-exp3.nc differ
diff --git a/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp1_G1-1_timestep.nc b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp1_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9e6ae158fabce58a11b81c45cffc294b752b523c
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp1_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp2_G1-1_timestep.nc b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp2_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..fbfcc80186ef1b1a3a3ed88542dfe8e85c07f865
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp2_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp3_G1-1_timestep.nc b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp3_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..5244415ba0820a75a87db973f9ef0b05bc6c6627
Binary files /dev/null and b/utils/laugh_tests/colbeck1976/verification_data/colbeck1976-exp3_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/colbeck1976/verification_data/runinfo.txt b/utils/laugh_tests/colbeck1976/verification_data/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ffb0dd15662a7bbe474e0cf29bcc9d66997b6c7
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/verification_data/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=15 - hh=21 - mi=53 - ss=23.550
diff --git a/utils/laugh_tests/colbeck1976/verify_colbeck.py b/utils/laugh_tests/colbeck1976/verify_colbeck.py
new file mode 100644
index 0000000000000000000000000000000000000000..0394fb583cad070f25de0435eda4477de119be88
--- /dev/null
+++ b/utils/laugh_tests/colbeck1976/verify_colbeck.py
@@ -0,0 +1,93 @@
+from os import listdir
+from os.path import isfile, join
+from pathlib import Path
+import xarray as xr
+import numpy as np
+
+
+def verify(verified_data_path, data_to_compare_path, output_variables, numHRU):
+    try:
+        verified_dataset = xr.open_dataset(verified_data_path)
+        to_compare_dataset = xr.open_dataset(data_to_compare_path)
+    except FileNotFoundError:
+        print("Check the variables \'verified_data_path\' and \'data_to_compare_path\'. They may not point to the correct output files or the output filenames may have changed.")
+        exit()
+
+    # Get the HRUs from the dataset into a list
+    for iHRU in range(0, numHRU):
+        verified_hru = verified_dataset.isel(hru=iHRU).copy()
+        hru_to_compare = to_compare_dataset.isel(hru=iHRU).copy()
+
+        for var in output_variables:
+            try:
+                if len(verified_hru[var].values) != len(hru_to_compare[var].values):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_hru[var].values))
+                    print("     hru_to_compare = ", len(hru_to_compare[var].values))
+                
+                verified_data = []
+                to_verify_data = []
+                if (verified_hru[var].values.ndim > 1):
+                    # 2D output case
+                    for list in verified_hru[var].values:
+                        for data in list:
+                            verified_data.append(data)
+                    
+                    for list in hru_to_compare[var].values:
+                        for data in list:
+                            to_verify_data.append(data)
+
+                else:
+                    # 1D output case
+                    for data in verified_hru[var].values:
+                        verified_data.append(data)
+                    
+                    for data in hru_to_compare[var].values:
+                        to_verify_data.append(data)
+
+                                    
+                # check length
+                if len(verified_data) != len(to_verify_data):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_data))
+                    print("     hru_to_compare = ", len(to_verify_data))
+
+                # check values
+                for elem in range(0, len(verified_data)):
+                    if verified_data[elem] != to_verify_data[elem]:
+                        print("variable -",var, "has different values at", elem)
+                        print("     verified_hru = ", verified_data[elem])
+                        print("     hru_to_compare = ", to_verify_data[elem])
+                        break
+
+            except TypeError:
+                print("variable - ", var, "Cannot be compared with len")
+                print("     verified_hru = ",verified_hru[var].values)
+                print("     hru_to_compare = ", hru_to_compare[var].values)
+
+
+numHRU = 1
+
+scalarRainfall = "scalarRainfall"
+scalarSnowfall = "scalarSnowfall"
+scalarRainPlusMelt = "scalarRainPlusMelt"
+mLayerVolFracLiq = "mLayerVolFracLiq"
+mLayerVolFracIce = "mLayerVolFracIce"
+iLayerNrgFlux = "iLayerNrgFlux"
+iLayerHeight = "iLayerHeight"
+mLayerDepth = "mLayerDepth"
+
+output_variables = [scalarRainfall, scalarSnowfall, scalarRainPlusMelt, mLayerVolFracLiq, \
+    mLayerVolFracIce, iLayerNrgFlux, iLayerHeight, mLayerDepth]
+
+verified_data_path = Path("./verification_data/colbeck1976-exp1_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/colbeck1976-exp1GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+verified_data_path = Path("./verification_data/colbeck1976-exp2_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/colbeck1976-exp2GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+verified_data_path = Path("./verification_data/colbeck1976-exp3_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/colbeck1976-exp3GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
\ No newline at end of file
diff --git a/utils/laugh_tests/dir_setup.sh b/utils/laugh_tests/dir_setup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ef701e68a376579da92d834ca23aca6490cd8341
--- /dev/null
+++ b/utils/laugh_tests/dir_setup.sh
@@ -0,0 +1,10 @@
+#! /bin/bash
+
+for dir in */; do
+    mkdir -p $dir/verification_data
+    # mkdir -p $dir/config
+    # mkdir -p $dir/forcing_data
+    # mkdir -p $dir/output
+    # mkdir -p $dir/settings
+    # touch $dir/run_test.sh
+done
diff --git a/utils/laugh_tests/miller1998/config/clay/Summa_Actors_Settings.json b/utils/laugh_tests/miller1998/config/clay/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..ccf6c4ac6c5fedcbd3a2dc028797926fd12ce17c
--- /dev/null
+++ b/utils/laugh_tests/miller1998/config/clay/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_millerClay.txt",
+      "outputCSV": false,
+      "csvPath": "/scratch/kck540/csv/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/config/loam/Summa_Actors_Settings.json b/utils/laugh_tests/miller1998/config/loam/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..c54ea844cf533f2b955e615f9b7120c5c62a106b
--- /dev/null
+++ b/utils/laugh_tests/miller1998/config/loam/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_millerLoam.txt",
+      "outputCSV": false,
+      "csvPath": "/scratch/kck540/csv/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/config/sand/Summa_Actors_Settings.json b/utils/laugh_tests/miller1998/config/sand/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..37fc2967464269d2d244021cd734715399748dc5
--- /dev/null
+++ b/utils/laugh_tests/miller1998/config/sand/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+  "DistributedSettings": {
+      "distributed-mode": false,
+      "host": "localhost",
+      "port": 4444
+  },
+
+  "SimulationSettings": {
+      "total_hru_count": 100000,
+      "num_hru_per_batch": 500
+  },
+
+  "SummaActor": {
+      "OuputStructureSize": 250,
+      "maxGRUPerJob": 250
+  },
+
+  "FileAccessActor": {
+      "num_vectors_in_output_manager": 1
+  },
+  
+  "JobActor": {
+      "FileManagerPath": "/Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_millerSand.txt",
+      "outputCSV": false,
+      "csvPath": "/scratch/kck540/csv/"
+  },
+
+  "HRUActor": {
+      "printOutput": true,
+      "outputFrequency": 1
+  }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/forcing_data/miller1998_forcing.nc b/utils/laugh_tests/miller1998/forcing_data/miller1998_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..07ea45bea8c8763c4a218a788849d3a167006aec
Binary files /dev/null and b/utils/laugh_tests/miller1998/forcing_data/miller1998_forcing.nc differ
diff --git a/utils/laugh_tests/miller1998/output/millerClayGRU1-1_timestep.nc b/utils/laugh_tests/miller1998/output/millerClayGRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9d300d43aca06babe931ddc2ad3e57c26be239f5
Binary files /dev/null and b/utils/laugh_tests/miller1998/output/millerClayGRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/output/millerLoamGRU1-1_timestep.nc b/utils/laugh_tests/miller1998/output/millerLoamGRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..aa63590c28a5d07dd82904425de6e93e002a85b8
Binary files /dev/null and b/utils/laugh_tests/miller1998/output/millerLoamGRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/output/millerSandGRU1-1_timestep.nc b/utils/laugh_tests/miller1998/output/millerSandGRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..c067e467c38ae7ac26e211bdb550c56f12e6d9b7
Binary files /dev/null and b/utils/laugh_tests/miller1998/output/millerSandGRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/output/runinfo.txt b/utils/laugh_tests/miller1998/output/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..669c7fc77bb60ce4123c1f6e5f4cde3cffd3eb7c
--- /dev/null
+++ b/utils/laugh_tests/miller1998/output/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=18 - mi=45 - ss=41.931
diff --git a/utils/laugh_tests/miller1998/run_test_summa.sh b/utils/laugh_tests/miller1998/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..afe4927125202154f9eed9373db8c8264c2dc8a8
--- /dev/null
+++ b/utils/laugh_tests/miller1998/run_test_summa.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerClay.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerLoam.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerSand.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/run_test_summa_actors.sh b/utils/laugh_tests/miller1998/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..864e583b8aa024e5655c409fd77279f2a00b6088
--- /dev/null
+++ b/utils/laugh_tests/miller1998/run_test_summa_actors.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/clay
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/loam
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/sand
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/settings/GENPARM.TBL b/utils/laugh_tests/miller1998/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/miller1998/settings/MPTABLE.TBL b/utils/laugh_tests/miller1998/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/miller1998/settings/Model_Output.txt b/utils/laugh_tests/miller1998/settings/Model_Output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..19ed37469f9d3860b3414756a551cb850ab9955b
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/Model_Output.txt
@@ -0,0 +1,34 @@
+! ---------
+! model variables
+! ---------
+time                      | 1
+nSnow                     | 1
+nSoil                     | 1
+nLayers                   | 1
+mLayerHeight              | 1
+iLayerLiqFluxSoil         | 1
+mLayerDepth               | 1
+mLayerVolFracIce          | 1
+mLayerVolFracLiq          | 1
+mLayerMatricHead          | 1
+mLayerTranspire           | 1
+mLayerBaseflow            | 1
+mLayerCompress            | 1
+iLayerNrgFlux             | 1
+basin__TotalArea          | 1
+scalarGroundEvaporation   | 1
+scalarSoilBaseflow        | 1
+scalarSoilDrainage        | 1
+scalarInfiltration        | 1
+scalarSnowDrainage        | 1
+scalarSnowSublimation     | 1
+scalarThroughfallRain     | 1
+scalarThroughfallSnow     | 1
+scalarRainfall            | 1
+scalarSnowfall            | 1
+scalarRainPlusMelt        | 1
+fieldCapacity             | 1
+pptrate                   | 1
+averageRoutedRunoff       | 1
+scalarSWE                 | 1
+fieldCapacity             | 1
diff --git a/utils/laugh_tests/miller1998/settings/SOILPARM.TBL b/utils/laugh_tests/miller1998/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/miller1998/settings/VEGPARM.TBL b/utils/laugh_tests/miller1998/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_millerClay.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerClay.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d6fe3abfafa97673c8add526f9c0f30956c161d0
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerClay.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '2000-01-01' 
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerClay.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerClay.nc' !  initial_cond
+outFilePrefix        'millerClay' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' !
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_millerLoam.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerLoam.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab888a3f726ada3b55119674a17f6184408cae8a
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerLoam.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' !
+simEndTime           '2000-01-03 12:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '2000-01-01'
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerLoam.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerLoam.nc' !  initial_cond
+outFilePrefix        'millerLoam' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_millerSand.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerSand.txt
new file mode 100644
index 0000000000000000000000000000000000000000..936e25a1462daf32f74bf1c099991e3bdf64a185
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_millerSand.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' !
+simEndTime           '2000-01-03 12:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '2000-01-01'
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerSand.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerSand.nc' !  initial_cond
+outFilePrefix        'millerSand' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerClay.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerClay.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fc458a0711bb6c262c84e0af327f533a7d300f0c
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerClay.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerClay.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerClay.nc' !  initial_cond
+outFilePrefix        'millerClay' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerLoam.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerLoam.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cb94073e6bab85248ba7197604e3ba6c114122f2
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerLoam.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' !
+simEndTime           '2000-01-03 12:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerLoam.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerLoam.nc' !  initial_cond
+outFilePrefix        'millerLoam' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerSand.txt b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerSand.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f09dc37a9ca504826ee8775dedf8a6158d1f0c6b
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerSand.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:30' !
+simEndTime           '2000-01-03 12:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/miller1998/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/miller1998/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/miller1998/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_miller1998.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_millerSand.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_millerSand.nc' !  initial_cond
+outFilePrefix        'millerSand' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/miller1998/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/miller1998/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/miller1998/settings/summa_zDecisions_miller1998.txt b/utils/laugh_tests/miller1998/settings/summa_zDecisions_miller1998.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d17071ceff8b467be5120db09ec0df8c69d7a2d8
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zDecisions_miller1998.txt
@@ -0,0 +1,170 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA        ! (03) soil-category dateset
+vegeParTbl                      USGS           ! (04) vegetation category dataset
+soilStress                      NoahType       ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry      ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive       ! (07) choice of numerical method
+fDerivMeth                      analytic       ! (08) method used to calculate flux derivatives
+LAI_method                      monTable       ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform       ! (10) form of Richard's equation
+groundwatr                      noXplict       ! (11) choice of groundwater parameterization
+hc_profile                      constant       ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      zeroFlux       ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux       ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      presHead       ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      presHead       ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988   ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      difTrans       ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow      ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy ! (20) choice of wind profile through the canopy
+astability                      louisinv       ! (21) choice of stability function
+canopySrad                      CLM_2stream    ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay       ! (23) choice of albedo representation
+compaction                      anderson       ! (24) choice of compaction routine
+snowLayers                      CLM_2010       ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      jrdn1991       ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      mixConstit     ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn    ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay       ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1988     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerClay.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerLoam.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerSand.txt
diff --git a/utils/laugh_tests/miller1998/settings/summa_zForcingFileList.txt b/utils/laugh_tests/miller1998/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c9ef914a0df0262176396e2c2af5fbaab330db61
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'miller1998_forcing.nc'
diff --git a/utils/laugh_tests/miller1998/settings/summa_zForcingInfo_miller1998.txt b/utils/laugh_tests/miller1998/settings/summa_zForcingInfo_miller1998.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9019c76a5bc0758b954f3949c5eb145e1c5f8f2
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zForcingInfo_miller1998.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | miller1998_forcing.txt ! name of the forcing data file (must be in single quotes)
+ncols          | 13                     ! number of columns in the forcing file
+iyyy           | 1                      ! year
+im             | 2                      ! month
+id             | 3                      ! day
+ih             | 4                      ! hour
+imin           | 5                      ! minute
+pptrate        | 7                      ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                      ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                      ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                     ! air temperature                 (K)
+windspd        | 11                     ! windspeed                       (m/s)
+airpres        | 12                     ! pressure                        (Pa)
+spechum        | 13                     ! specific humidity               (g/g)
+data_step      | 900                    ! length of time step (seconds)
diff --git a/utils/laugh_tests/miller1998/settings/summa_zInitialCond_miller1998.txt b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_miller1998.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d52d1c91a222681f9dc6e525a7f1eec014535ac6
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_miller1998.txt
@@ -0,0 +1,148 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF MODEL INITIAL CONDITIONS **************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! PART 1: DEFINE SCALAR VARIABLES
+! -------------------------------
+! Variable name followed by the value
+! The variable names are important, as they must match the variable names in the code
+! ***********************************************************************************************************************
+<start_scalar_icond>
+! --------------------------------
+dt_init                   10.000000000000
+scalarCanopyIce            0.000000000000
+scalarCanopyLiq            0.000000000000
+scalarCanairTemp         286.000000000000
+scalarCanopyTemp         290.000000000000
+scalarSnowAlbedo           0.820000000000
+scalarSWE                  0.000000000000
+scalarSnowDepth            0.000000000000
+scalarSfcMeltPond          0.000000000000
+scalarAquiferStorage       0.000000000000
+! --------------------------------
+<end_scalar_icond>
+! ***********************************************************************************************************************
+!
+!
+! ***********************************************************************************************************************
+! PART 2: DEFINE LAYER VARIABLES
+! -------------------------------
+! Variable names followed by values
+! The variable names are important, as they must match the variable names in the code
+! -------------------------------
+! layerType        = snow or soil (4-character string)
+! iLayerHeight     = height of the layer interface; top of soil = 0 (m)
+! mLayerDepth      = depth of the layer (m)
+! mLayerTemp       = temperature of the layer (K)
+! mLayerVolFracIce = volumetric fraction of ice (-)
+! mLayerVolFracLiq = volumetric fraction of liquid water (-)
+! mLayerMatricHead = matric head (m)
+! ***********************************************************************************************************************
+<start_layer_icond>
+! -------------------------------
+ layerType iLayerHeight  mLayerDepth mLayerTemp  mLayerVolFracIce mLayerVolFracLiq mLayerMatricHead
+      soil    0.0000000    0.1000000    285.160          0.000000         0.093000        -9.950000
+      soil    0.1000000    0.1000000    285.160          0.000000         0.093000        -9.850000
+      soil    0.2000000    0.1000000    285.160          0.000000         0.093000        -9.750000
+      soil    0.3000000    0.1000000    285.160          0.000000         0.093000        -9.650000
+      soil    0.4000000    0.1000000    285.160          0.000000         0.093001        -9.550000
+      soil    0.5000000    0.1000000    285.160          0.000000         0.093001        -9.450000
+      soil    0.6000000    0.1000000    285.160          0.000000         0.093001        -9.350000
+      soil    0.7000000    0.1000000    285.160          0.000000         0.093001        -9.250000
+      soil    0.8000000    0.1000000    285.160          0.000000         0.093001        -9.150000
+      soil    0.9000000    0.1000000    285.160          0.000000         0.093001        -9.050000
+      soil    1.0000000    0.1000000    285.160          0.000000         0.093001        -8.950000
+      soil    1.1000000    0.1000000    285.160          0.000000         0.093001        -8.850000
+      soil    1.2000000    0.1000000    285.160          0.000000         0.093001        -8.750000
+      soil    1.3000000    0.1000000    285.160          0.000000         0.093001        -8.650000
+      soil    1.4000000    0.1000000    285.160          0.000000         0.093001        -8.550000
+      soil    1.5000000    0.1000000    285.160          0.000000         0.093001        -8.450000
+      soil    1.6000000    0.1000000    285.160          0.000000         0.093001        -8.350000
+      soil    1.7000000    0.1000000    285.160          0.000000         0.093001        -8.250000
+      soil    1.8000000    0.1000000    285.160          0.000000         0.093001        -8.150000
+      soil    1.9000000    0.1000000    285.160          0.000000         0.093001        -8.050000
+      soil    2.0000000    0.1000000    285.160          0.000000         0.093001        -7.950000
+      soil    2.1000000    0.1000000    285.160          0.000000         0.093001        -7.850000
+      soil    2.2000000    0.1000000    285.160          0.000000         0.093001        -7.750000
+      soil    2.3000000    0.1000000    285.160          0.000000         0.093001        -7.650000
+      soil    2.4000000    0.1000000    285.160          0.000000         0.093001        -7.550000
+      soil    2.5000000    0.1000000    285.160          0.000000         0.093001        -7.450000
+      soil    2.6000000    0.1000000    285.160          0.000000         0.093001        -7.350000
+      soil    2.7000000    0.1000000    285.160          0.000000         0.093001        -7.250000
+      soil    2.8000000    0.1000000    285.160          0.000000         0.093001        -7.150000
+      soil    2.9000000    0.1000000    285.160          0.000000         0.093001        -7.050000
+      soil    3.0000000    0.1000000    285.160          0.000000         0.093001        -6.950000
+      soil    3.1000000    0.1000000    285.160          0.000000         0.093002        -6.850000
+      soil    3.2000000    0.1000000    285.160          0.000000         0.093002        -6.750000
+      soil    3.3000000    0.1000000    285.160          0.000000         0.093002        -6.650000
+      soil    3.4000000    0.1000000    285.160          0.000000         0.093002        -6.550000
+      soil    3.5000000    0.1000000    285.160          0.000000         0.093002        -6.450000
+      soil    3.6000000    0.1000000    285.160          0.000000         0.093002        -6.350000
+      soil    3.7000000    0.1000000    285.160          0.000000         0.093002        -6.250000
+      soil    3.8000000    0.1000000    285.160          0.000000         0.093002        -6.150000
+      soil    3.9000000    0.1000000    285.160          0.000000         0.093002        -6.050000
+      soil    4.0000000    0.1000000    285.160          0.000000         0.093002        -5.950000
+      soil    4.1000000    0.1000000    285.160          0.000000         0.093003        -5.850000
+      soil    4.2000000    0.1000000    285.160          0.000000         0.093003        -5.750000
+      soil    4.3000000    0.1000000    285.160          0.000000         0.093003        -5.650000
+      soil    4.4000000    0.1000000    285.160          0.000000         0.093003        -5.550000
+      soil    4.5000000    0.1000000    285.160          0.000000         0.093003        -5.450000
+      soil    4.6000000    0.1000000    285.160          0.000000         0.093003        -5.350000
+      soil    4.7000000    0.1000000    285.160          0.000000         0.093004        -5.250000
+      soil    4.8000000    0.1000000    285.160          0.000000         0.093004        -5.150000
+      soil    4.9000000    0.1000000    285.160          0.000000         0.093004        -5.050000
+      soil    5.0000000    0.1000000    285.160          0.000000         0.093004        -4.950000
+      soil    5.1000000    0.1000000    285.160          0.000000         0.093005        -4.850000
+      soil    5.2000000    0.1000000    285.160          0.000000         0.093005        -4.750000
+      soil    5.3000000    0.1000000    285.160          0.000000         0.093005        -4.650000
+      soil    5.4000000    0.1000000    285.160          0.000000         0.093006        -4.550000
+      soil    5.5000000    0.1000000    285.160          0.000000         0.093006        -4.450000
+      soil    5.6000000    0.1000000    285.160          0.000000         0.093007        -4.350000
+      soil    5.7000000    0.1000000    285.160          0.000000         0.093007        -4.250000
+      soil    5.8000000    0.1000000    285.160          0.000000         0.093008        -4.150000
+      soil    5.9000000    0.1000000    285.160          0.000000         0.093008        -4.050000
+      soil    6.0000000    0.1000000    285.160          0.000000         0.093009        -3.950000
+      soil    6.1000000    0.1000000    285.160          0.000000         0.093010        -3.850000
+      soil    6.2000000    0.1000000    285.160          0.000000         0.093011        -3.750000
+      soil    6.3000000    0.1000000    285.160          0.000000         0.093012        -3.650000
+      soil    6.4000000    0.1000000    285.160          0.000000         0.093013        -3.550000
+      soil    6.5000000    0.1000000    285.160          0.000000         0.093014        -3.450000
+      soil    6.6000000    0.1000000    285.160          0.000000         0.093016        -3.350000
+      soil    6.7000000    0.1000000    285.160          0.000000         0.093017        -3.250000
+      soil    6.8000000    0.1000000    285.160          0.000000         0.093019        -3.150000
+      soil    6.9000000    0.1000000    285.160          0.000000         0.093021        -3.050000
+      soil    7.0000000    0.1000000    285.160          0.000000         0.093024        -2.950000
+      soil    7.1000000    0.1000000    285.160          0.000000         0.093027        -2.850000
+      soil    7.2000000    0.1000000    285.160          0.000000         0.093030        -2.750000
+      soil    7.3000000    0.1000000    285.160          0.000000         0.093034        -2.650000
+      soil    7.4000000    0.1000000    285.160          0.000000         0.093038        -2.550000
+      soil    7.5000000    0.1000000    285.160          0.000000         0.093044        -2.450000
+      soil    7.6000000    0.1000000    285.160          0.000000         0.093050        -2.350000
+      soil    7.7000000    0.1000000    285.160          0.000000         0.093058        -2.250000
+      soil    7.8000000    0.1000000    285.160          0.000000         0.093067        -2.150000
+      soil    7.9000000    0.1000000    285.160          0.000000         0.093078        -2.050000
+      soil    8.0000000    0.1000000    285.160          0.000000         0.093092        -1.950000
+      soil    8.1000000    0.1000000    285.160          0.000000         0.093109        -1.850000
+      soil    8.2000000    0.1000000    285.160          0.000000         0.093131        -1.750000
+      soil    8.3000000    0.1000000    285.160          0.000000         0.093158        -1.650000
+      soil    8.4000000    0.1000000    285.160          0.000000         0.093194        -1.550000
+      soil    8.5000000    0.1000000    285.160          0.000000         0.093241        -1.450000
+      soil    8.6000000    0.1000000    285.160          0.000000         0.093305        -1.350000
+      soil    8.7000000    0.1000000    285.160          0.000000         0.093392        -1.250000
+      soil    8.8000000    0.1000000    285.160          0.000000         0.093514        -1.150000
+      soil    8.9000000    0.1000000    285.160          0.000000         0.093692        -1.050000
+      soil    9.0000000    0.1000000    285.160          0.000000         0.093959        -0.950000
+      soil    9.1000000    0.1000000    285.160          0.000000         0.094378        -0.850000
+      soil    9.2000000    0.1000000    285.160          0.000000         0.095071        -0.750000
+      soil    9.3000000    0.1000000    285.160          0.000000         0.096299        -0.650000
+      soil    9.4000000    0.1000000    285.160          0.000000         0.098672        -0.550000
+      soil    9.5000000    0.1000000    285.160          0.000000         0.103817        -0.450000
+      soil    9.6000000    0.1000000    285.160          0.000000         0.116835        -0.350000
+      soil    9.7000000    0.1000000    285.160          0.000000         0.155619        -0.250000
+      soil    9.8000000    0.1000000    285.160          0.000000         0.251168        -0.150000
+      soil    9.9000000    0.1000000    285.160          0.000000         0.300370        -0.050000
+<end_layer_icond>
diff --git a/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerClay.nc b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerClay.nc
new file mode 100644
index 0000000000000000000000000000000000000000..02eac15d2ed210a218bfecffb849272ec03058ce
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerClay.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerLoam.nc b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerLoam.nc
new file mode 100644
index 0000000000000000000000000000000000000000..4c34b8216eeb21898cf7dd65f975911103b96248
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerLoam.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerSand.nc b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerSand.nc
new file mode 100644
index 0000000000000000000000000000000000000000..889c1256311175016075a46043d03c0c3c2d9908
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zInitialCond_millerSand.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/miller1998/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..751bf3c5fb15cb326c4ca75c3f3e236ce3a0c26c
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/miller1998/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7dcd36cb83eee0bac6edcf76168e96e6d82bd46e
--- /dev/null
+++ b/utils/laugh_tests/miller1998/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |       0.1000 |    -100.0000 |      -0.0100
+lowerBoundHead            |       0.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.1600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0600 |       0.0100 |       0.1000
+k_snow                    |       0.0150 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       1.0000 |       0.0100 |       3.0000
+summerLAI                 |       3.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       0.5000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.0750 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |      20.0000 |       0.0500 |     100.0000
+heightCanopyBottom        |       2.0000 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      10.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       0.0000 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |       5.5000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.2000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.4010 |       0.3000 |       0.6000
+theta_sat                 |       0.5500 |       0.3000 |       0.6000
+theta_res                 |       0.1390 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.8400 |      -1.0000 |      -0.0100
+vGn_n                     |       1.3000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    |      7.5d-06 |       1.d-07 |     100.d-07
+k_macropore               |      1.0d-03 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       2.5000 |       0.1000 |     100.0000
+compactedDepth            |       1.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |      50.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-09 |       1.d-05 |       1.d-07
+f_impede                  |       2.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       0.1000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |     100.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-1 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-1 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerClay.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerLoam.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/miller1998/summa_fileManager_millerSand.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerClay.nc b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerClay.nc
new file mode 100644
index 0000000000000000000000000000000000000000..19fcb53d7ed275d6a9b59016aedc8e67fef3c145
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerClay.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerLoam.nc b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerLoam.nc
new file mode 100644
index 0000000000000000000000000000000000000000..c39f7ca18238d0acf0d8bdfaa012351dbed9124c
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerLoam.nc differ
diff --git a/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerSand.nc b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerSand.nc
new file mode 100644
index 0000000000000000000000000000000000000000..92a3d683aff94a80dd02f599430bd9f5ffe452d4
Binary files /dev/null and b/utils/laugh_tests/miller1998/settings/summa_zParamTrial_millerSand.nc differ
diff --git a/utils/laugh_tests/miller1998/verification_data/millerClay_G1-1_timestep.nc b/utils/laugh_tests/miller1998/verification_data/millerClay_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9a7d14bb8b9dc39c7fe3c43249431a71b0c4e277
Binary files /dev/null and b/utils/laugh_tests/miller1998/verification_data/millerClay_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/verification_data/millerLoam_G1-1_timestep.nc b/utils/laugh_tests/miller1998/verification_data/millerLoam_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..f6e693fa20823fc0662ab456a69b49a596fe4ea0
Binary files /dev/null and b/utils/laugh_tests/miller1998/verification_data/millerLoam_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/verification_data/millerSand_G1-1_timestep.nc b/utils/laugh_tests/miller1998/verification_data/millerSand_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..fadc7a011eb7da163d48b515316973419a08666f
Binary files /dev/null and b/utils/laugh_tests/miller1998/verification_data/millerSand_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/miller1998/verification_data/runinfo.txt b/utils/laugh_tests/miller1998/verification_data/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3db320081a2c880461b00611d781f7fd29026a17
--- /dev/null
+++ b/utils/laugh_tests/miller1998/verification_data/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=18 - mi=39 - ss=02.545
diff --git a/utils/laugh_tests/miller1998/verify_miller.py b/utils/laugh_tests/miller1998/verify_miller.py
new file mode 100644
index 0000000000000000000000000000000000000000..2c55f14611b16e36dff9869c85047e95888acb38
--- /dev/null
+++ b/utils/laugh_tests/miller1998/verify_miller.py
@@ -0,0 +1,120 @@
+from os import listdir
+from os.path import isfile, join
+from pathlib import Path
+import xarray as xr
+import numpy as np
+
+
+def verify(verified_data_path, data_to_compare_path, output_variables, numHRU):
+    try:
+        verified_dataset = xr.open_dataset(verified_data_path)
+        to_compare_dataset = xr.open_dataset(data_to_compare_path)
+    except FileNotFoundError:
+        print("Check the variables \'verified_data_path\' and \'data_to_compare_path\'. They may not point to the correct output files or the output filenames may have changed.")
+        exit()
+
+    # Get the HRUs from the dataset into a list
+    for iHRU in range(0, numHRU):
+        verified_hru = verified_dataset.isel(hru=iHRU).copy()
+        hru_to_compare = to_compare_dataset.isel(hru=iHRU).copy()
+
+        for var in output_variables:
+            try:
+                if len(verified_hru[var].values) != len(hru_to_compare[var].values):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_hru[var].values))
+                    print("     hru_to_compare = ", len(hru_to_compare[var].values))
+                
+                verified_data = []
+                to_verify_data = []
+                if (verified_hru[var].values.ndim > 1):
+                    # 2D output case
+                    for list in verified_hru[var].values:
+                        for data in list:
+                            verified_data.append(data)
+                    
+                    for list in hru_to_compare[var].values:
+                        for data in list:
+                            to_verify_data.append(data)
+
+                else:
+                    # 1D output case
+                    for data in verified_hru[var].values:
+                        verified_data.append(data)
+                    
+                    for data in hru_to_compare[var].values:
+                        to_verify_data.append(data)
+
+                                    
+                # check length
+                if len(verified_data) != len(to_verify_data):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_data))
+                    print("     hru_to_compare = ", len(to_verify_data))
+
+                # check values
+                for elem in range(0, len(verified_data)):
+                    if verified_data[elem] != to_verify_data[elem]:
+                        print("variable -",var, "has different values at", elem)
+                        print("     verified_hru = ", verified_data[elem])
+                        print("     hru_to_compare = ", to_verify_data[elem])
+                        break
+
+            except TypeError:
+                print("variable - ", var, "Cannot be compared with len")
+                print("     verified_hru = ",verified_hru[var].values)
+                print("     hru_to_compare = ", hru_to_compare[var].values)
+
+
+numHRU = 1
+
+time = "time" 
+nSnow = "nSnow" 
+nSoil = "nSoil" 
+nLayers = "nLayers" 
+mLayerHeight = "mLayerHeight" 
+iLayerLiqFluxSoil = "iLayerLiqFluxSoil" 
+mLayerDepth = "mLayerDepth" 
+mLayerVolFracIce = "mLayerVolFracIce" 
+mLayerVolFracLiq = "mLayerVolFracLiq" 
+mLayerMatricHead = "mLayerMatricHead" 
+mLayerTranspire = "mLayerTranspire" 
+mLayerBaseflow = "mLayerBaseflow" 
+mLayerCompress = "mLayerCompress" 
+iLayerNrgFlux = "iLayerNrgFlux" 
+basin__TotalArea = "basin__TotalArea" 
+scalarGroundEvaporation = "scalarGroundEvaporation" 
+scalarSoilBaseflow = "scalarSoilBaseflow" 
+scalarSoilDrainage = "scalarSoilDrainage" 
+scalarInfiltration = "scalarInfiltration" 
+scalarSnowDrainage = "scalarSnowDrainage" 
+scalarSnowSublimation = "scalarSnowSublimation" 
+scalarThroughfallRain = "scalarThroughfallRain" 
+scalarThroughfallSnow = "scalarThroughfallSnow" 
+scalarRainfall = "scalarRainfall" 
+scalarSnowfall = "scalarSnowfall" 
+scalarRainPlusMelt = "scalarRainPlusMelt" 
+pptrate = "pptrate" 
+averageRoutedRunoff = "averageRoutedRunoff" 
+scalarSWE = "scalarSWE"
+fieldCapacity = "fieldCapacity"
+
+output_variables = [time, nSnow, nSoil, nLayers, mLayerHeight, iLayerLiqFluxSoil, \
+    mLayerDepth, mLayerVolFracIce, mLayerVolFracLiq, mLayerMatricHead, mLayerTranspire, \
+    mLayerBaseflow, mLayerCompress, iLayerNrgFlux, basin__TotalArea, scalarGroundEvaporation, \
+    scalarSoilBaseflow, scalarSoilDrainage, scalarInfiltration, scalarSnowDrainage, \
+    scalarSnowSublimation, scalarThroughfallRain, scalarThroughfallSnow, scalarRainfall, \
+    scalarSnowfall, scalarRainPlusMelt, pptrate, averageRoutedRunoff, \
+    scalarSWE, fieldCapacity]
+
+verified_data_path = Path("./verification_data/millerClay_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/millerClayGRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+verified_data_path = Path("./verification_data/millerLoam_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/millerLoamGRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+# verified_data_path = Path("./verification_data/millerSand_G1-1_timestep.nc")
+# data_to_compare_path = Path("./output/millerSandGRU1-1_timestep.nc")
+# verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/config/Summa_Actors_Settings.json b/utils/laugh_tests/mizoguchi1990/config/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..7ebcd5557fbe5bb71ecee0dee16b3b3547d1fbd9
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/config/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": false,
+        "host": "localhost",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100000,
+        "num_hru_per_batch": 500
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 250
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/Summa-Actors/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_mizoguchi.txt",
+        "outputCSV": false,
+        "csvPath": "/scratch/kck540/csv/"
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 1
+    }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.nc b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..d305f9a47f794cab26569546f48c16a9d6a825bf
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.pro b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.pro
new file mode 100644
index 0000000000000000000000000000000000000000..d56c2c6e4733734ff6da584671821ea6fd963552
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_forcing.pro
@@ -0,0 +1,94 @@
+pro mizoguchi_forcing
+
+; define constants
+Tfreeze = 273.16d
+
+; define parameters
+dt = 60.d ; (time step)
+
+; define plotting parameters
+window, 0, xs=1000, ys=1000, retain=2
+device, decomposed=0
+LOADCT, 39
+!P.BACKGROUND=255
+!P.CHARSIZE=2.5
+!P.COLOR=0
+erase, color=255
+!P.MULTI=[0,1,4]
+
+; define the number of days
+ndays = 3
+
+; define the number of time steps per hour
+nprhr = 3600.d/dt
+
+; define the number of steps per day
+nprdy = 86400.d/dt
+
+; define the number of time steps
+ntime = ndays*nprdy
+
+; define time in seconds
+stime = (dindgen(ntime)+1.d)*dt
+
+; define time in hours
+htime = stime/3600.
+
+; define maximum radiation
+rdmax = 250.d
+
+; define the dayln parameter
+dayln = -0.1
+
+; define radiation index
+radix = cos(2.d*!pi * (htime/24.d) + !pi) + dayln
+
+; define radiation
+swrad = replicate(0.d, ntime)  ;radix*(rdmax / (1.+dayln))
+
+; set negative radiation to zero
+ibad = where(swrad le 0.d, nbad)
+if (nbad gt 0) then swrad[ibad] = 0.d
+
+; make a base plot for solar radiation
+plot, htime, xrange=[0,ntime/nprhr], yrange=[0,1000], xstyle=9, ystyle=1, $
+ ytitle = 'Solar radiation (W m!e-2!n)', xmargin=[10,10], ymargin=[3,2], $
+ xticks=6, /nodata
+plots, [htime[0],htime[ntime-1]], [  0,  0]
+plots, [htime[0],htime[ntime-1]], [250,250]
+
+plots, [24,24], [0,250]
+plots, [48,48], [0,250]
+
+oplot, htime, swrad
+
+; define other forcing variables
+lwrad = 275.d
+awind =   0.d
+atemp = Tfreeze - 6.d
+sphum = 1.d-3
+apres = 101325.d
+
+; define precipitation
+aprcp = replicate(0.d, ntime)
+
+; define time
+atime = stime/86400.d + julday(1,1,2000,0,0,0.d)
+
+; make a forcing file
+openw, out_unit, 'mizoguchi_forcing.txt', /get_lun
+
+for itime=0,ntime-1 do begin
+ ; define date
+ caldat, atime[itime], im, id, iyyy, ih, imi, dsec
+ ; print synthetic "data"
+ printf, out_unit, iyyy, im, id, ih, imi, dsec, aprcp[itime], swrad[itime], lwrad, atemp, awind, apres, sphum, $
+  format='(i4,1x,4(i2,1x),f6.1,1x,e14.4,1x,5(f10.3,1x),e12.3)'
+endfor
+
+; free up file unit
+free_lun, out_unit
+
+
+stop
+end
diff --git a/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_icond.pro b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_icond.pro
new file mode 100644
index 0000000000000000000000000000000000000000..2915ccaed5e2d0b8bfe7a5a89d6f490c2e9b75b5
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/forcing_data/mizoguchi_icond.pro
@@ -0,0 +1,146 @@
+pro mizoguchi_icond
+
+; used to create initial conditions for the synthetic test case
+
+; define vGn parameters (used to compute volumetric liquid water content)
+alpha     =  -1.11d     ; m-1 (0.00111 mm-1)
+n         =   1.48d
+m         =   1.d - 1.d/n
+theta_sat =   0.535d
+theta_res =   0.050d
+k_sat     =   0.0000032d
+f_impede  =  -7.d
+
+; define freezing point
+Tfreeze = 273.16d
+
+; define the number of nodes
+nodes = 20
+
+; define soil depth (m)
+zsoil = 0.2d
+
+; define layer thickness
+z_lay = zsoil/double(nodes)
+
+; define vertical grid (m) -- positive downward
+z_dep = (dindgen(nodes+1)/double(nodes))*zsoil
+
+; define the mid-point of each layer
+z_m = (z_dep[0:nodes-1] + z_dep[1:nodes])/2.d
+
+; define the layer thickness
+z_i = z_dep[1:nodes] - z_dep[0:nodes-1]
+
+; define soil temperature
+ztemp = replicate(6.7d + Tfreeze, nodes)
+
+; define volumetric liquid water content (-)
+ztheta = replicate(0.33d, nodes)
+zpress = dblarr(nodes)
+
+; loop through layers and compute the matric head (m)
+for ilayer=0,nodes-1 do begin
+ zpress[iLayer] = call_function('matricHead',zTheta[iLayer],theta_res,theta_sat,alpha,n,m)
+endfor
+
+; write data to file
+openw, out_unit, 'mizoguchi_icond.txt', /get_lun
+
+ ; write out soil data
+ for ilayer=0,nodes-1 do begin
+  printf, out_unit, 'soil', z_m[ilayer]-0.5d*z_i[ilayer], z_i[ilayer], $
+   ztemp[ilayer], 0.d, zTheta[ilayer], zPress[ilayer], $
+   format='(a10,1x,2(f12.7,1x),f10.3,1x,f17.6,1x,f16.6,1x,f16.6)'
+ endfor
+
+free_lun, out_unit
+
+
+stop
+end
+
+
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function matricHead, theta, theta_res, theta_sat, alpha, n, m
+ ; compute matric head given theta and soil parameters theta_sat, theta_res, k_sat, alpha, n, and m
+ return, (1.d/alpha)*( ( (theta - theta_res) / (theta_sat - theta_res) )^(-1.d/m) - 1.d)^(1.d/n)
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function k_psi, psi, alpha, k_sat, n, m
+
+; computes hydraulic conductivity given psi and soil hydraulic parameters alpha, k_sat, n, and m
+;  psi     = pressure (m)
+;  alpha   = scaling parameter (m-1)
+;  k_sat   = saturated hydraulic conductivity (m s-1)
+;  n       = vGn "n" parameter
+;  m       = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = k_sat * $
+ ( ( (1.d - (psi[ineg]*alpha)^(n-1.d) * (1.d + (psi[ineg]*alpha)^n)^(-m))^2.d ) / ( (1.d + (psi[ineg]*alpha)^n)^(m/2.d) ) )
+if (npos gt 0) then work[ipos] = k_sat
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function theta, psi, alpha, theta_res, theta_sat, n, m
+
+; computes volumetric water content based on psi and soil hydraulic parameters alpha, n, and m
+
+;  psi       = pressure (m)
+;  alpha     = scaling parameter (m-1)
+;  theta_res = residual volumetric water content (-)
+;  theta_sat = porosity (-)
+;  n         = vGn "n" parameter
+;  m         = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = theta_res + (theta_sat - theta_res)*(1.d + (alpha*psi[ineg])^n)^(-m)
+if (npos gt 0) then work[ipos] = theta_sat
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function dTheta_dPsi, psi, alpha, theta_res, theta_sat, n, m
+
+; computes the soil moisture capacity function, dTheta_dPsi (m-1)
+
+;  psi       = pressure (m)
+;  alpha     = scaling parameter (m-1)
+;  theta_res = residual volumetric water content (-)
+;  theta_sat = porosity (-)
+;  n         = vGn "n" parameter
+;  m         = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = (theta_sat-theta_res) * $
+                      (-m*(1.d + (psi[ineg]*alpha)^n)^(-m-1.d)) * n*(psi[ineg]*alpha)^(n-1.d) * alpha
+if (npos gt 0) then work[ipos] = 0.d
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
diff --git a/utils/laugh_tests/mizoguchi1990/output/mizoguchi1990GRU1-1_timestep.nc b/utils/laugh_tests/mizoguchi1990/output/mizoguchi1990GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..80d2ac17f8e003d6c6e59a7d165dd59cec28c438
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/output/mizoguchi1990GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/output/runinfo.txt b/utils/laugh_tests/mizoguchi1990/output/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5b2cc535df346aa6e49a312a33c75f5b4aa5615
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/output/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=19 - mi=08 - ss=32.417
diff --git a/utils/laugh_tests/mizoguchi1990/run_test_summa.sh b/utils/laugh_tests/mizoguchi1990/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2fa83eb73993c0c92fc2bdac3823ffd79211e2dd
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/run_test_summa.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_verify_mizoguchi.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/run_test_summa_actors.sh b/utils/laugh_tests/mizoguchi1990/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3334a9bfb01816ba7e9520fd0fe36faa44259177
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/run_test_summa_actors.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/mizoguchi1990/config
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/settings/GENPARM.TBL b/utils/laugh_tests/mizoguchi1990/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/mizoguchi1990/settings/MPTABLE.TBL b/utils/laugh_tests/mizoguchi1990/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/mizoguchi1990/settings/Model_Output.txt b/utils/laugh_tests/mizoguchi1990/settings/Model_Output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..19ed37469f9d3860b3414756a551cb850ab9955b
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/Model_Output.txt
@@ -0,0 +1,34 @@
+! ---------
+! model variables
+! ---------
+time                      | 1
+nSnow                     | 1
+nSoil                     | 1
+nLayers                   | 1
+mLayerHeight              | 1
+iLayerLiqFluxSoil         | 1
+mLayerDepth               | 1
+mLayerVolFracIce          | 1
+mLayerVolFracLiq          | 1
+mLayerMatricHead          | 1
+mLayerTranspire           | 1
+mLayerBaseflow            | 1
+mLayerCompress            | 1
+iLayerNrgFlux             | 1
+basin__TotalArea          | 1
+scalarGroundEvaporation   | 1
+scalarSoilBaseflow        | 1
+scalarSoilDrainage        | 1
+scalarInfiltration        | 1
+scalarSnowDrainage        | 1
+scalarSnowSublimation     | 1
+scalarThroughfallRain     | 1
+scalarThroughfallSnow     | 1
+scalarRainfall            | 1
+scalarSnowfall            | 1
+scalarRainPlusMelt        | 1
+fieldCapacity             | 1
+pptrate                   | 1
+averageRoutedRunoff       | 1
+scalarSWE                 | 1
+fieldCapacity             | 1
diff --git a/utils/laugh_tests/mizoguchi1990/settings/SOILPARM.TBL b/utils/laugh_tests/mizoguchi1990/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/mizoguchi1990/settings/VEGPARM.TBL b/utils/laugh_tests/mizoguchi1990/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_mizoguchi.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_mizoguchi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2f220a316ee3c053e860e62697095bffa265b321
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_mizoguchi.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:01' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/mizoguchi1990/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/mizoguchi1990/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/mizoguchi1990/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '2000-01-01' 
+decisionsFile        'summa_zDecisions_mizoguchi.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_mizoguchi.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_mizoguchi.nc' !  initial_cond
+outFilePrefix        'mizoguchi1990' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_verify_mizoguchi.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_verify_mizoguchi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..69517be0971ed8e23b1db287b8b118c6ca9596e6
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_fileManager_verify_mizoguchi.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 00:01' ! 
+simEndTime           '2000-01-03 12:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/mizoguchi1990/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/mizoguchi1990/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/mizoguchi1990/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_mizoguchi.txt' !  decision
+outputControlFile    'Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_mizoguchi.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_mizoguchi.nc' !  initial_cond
+outFilePrefix        'mizoguchi1990' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zDecisions_mizoguchi.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_zDecisions_mizoguchi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..32ebccac5a0c549881def40f2c71c35b005c1652
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_zDecisions_mizoguchi.txt
@@ -0,0 +1,168 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA         ! (03) soil-category dateset
+vegeParTbl                      USGS            ! (04) vegetation category dataset
+soilStress                      NoahType        ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry       ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive        ! (07) choice of numerical method
+fDerivMeth                      analytic        ! (08) method used to calculate flux derivatives
+LAI_method                      monTable        ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform        ! (10) form of Richard's equation
+groundwatr                      noXplict        ! (11) choice of groundwater parameterization
+hc_profile                      constant        ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      presTemp        ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux        ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      liq_flux        ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      zeroFlux        ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988    ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      difTrans        ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow       ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy  ! (20) choice of wind profile through the canopy
+astability                      louisinv        ! (21) choice of stability function
+canopySrad                      CLM_2stream     ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay        ! (23) choice of albedo representation
+compaction                      anderson        ! (24) choice of compaction routine
+snowLayers                      jrdn1991        ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      jrdn1991        ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      hanssonVZJ      ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn     ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay        ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1988     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:18 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/mizoguchi1990/summa_fileManager_mizoguchi.txt
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingFileList.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..54cd59448427e605213d73854a4b8e61e3095756
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'mizoguchi_forcing.nc'
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingInfo_mizoguchi.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingInfo_mizoguchi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..268d17423c5d9a2f5dd828010d30fbc7426b60bd
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_zForcingInfo_mizoguchi.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | mizoguchi_forcing.txt ! name of the forcing data file (must be in single quotes)
+ncols          | 13                    ! number of columns in the forcing file
+iyyy           | 1                     ! year
+im             | 2                     ! month
+id             | 3                     ! day
+ih             | 4                     ! hour
+imin           | 5                     ! minute
+pptrate        | 7                     ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                     ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                     ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                    ! air temperature                 (K)
+windspd        | 11                    ! windspeed                       (m/s)
+airpres        | 12                    ! pressure                        (Pa)
+spechum        | 13                    ! specific humidity               (g/g)
+data_step      | 60                    ! length of time step (seconds)
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zInitialCond_mizoguchi.nc b/utils/laugh_tests/mizoguchi1990/settings/summa_zInitialCond_mizoguchi.nc
new file mode 100644
index 0000000000000000000000000000000000000000..2ff2e3ffc4b70f3d8993cb916c0a900e504f4329
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/settings/summa_zInitialCond_mizoguchi.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..2909cb14bbbb1eaae1398976dacd601d039143af
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1ce9d46a0120e95c9d49733d3e534e0e92ededac
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |      -0.7500 |    -100.0000 |      -0.0100
+lowerBoundHead            |       0.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.1600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0400 |       0.0100 |       0.1000
+k_snow                    |       0.1979 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       1.0000 |       0.0100 |       3.0000
+summerLAI                 |       3.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       0.1000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.0750 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |      20.0000 |       0.0500 |     100.0000
+heightCanopyBottom        |       2.0000 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      10.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       0.0000 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |      28.0000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.2000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.4010 |       0.3000 |       0.6000
+theta_sat                 |       0.5500 |       0.3000 |       0.6000
+theta_res                 |       0.1390 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.8400 |      -1.0000 |      -0.0100
+vGn_n                     |       1.3000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    |      7.5d-06 |       1.d-07 |     100.d-07
+k_macropore               |      1.0d-03 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       2.5000 |       0.1000 |     100.0000
+compactedDepth            |       1.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |      50.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-09 |       1.d-05 |       1.d-07
+f_impede                  |       2.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       1.0000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |      20.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-6 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-6 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:18 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/mizoguchi1990/summa_fileManager_mizoguchi.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/mizoguchi1990/settings/summa_zParamTrial_mizoguchi.nc b/utils/laugh_tests/mizoguchi1990/settings/summa_zParamTrial_mizoguchi.nc
new file mode 100644
index 0000000000000000000000000000000000000000..0fd038b542c8c656ca15554a1b65cf8f1f18063f
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/settings/summa_zParamTrial_mizoguchi.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/verification_data/mizoguchi1990_G1-1_timestep.nc b/utils/laugh_tests/mizoguchi1990/verification_data/mizoguchi1990_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..4d093bfd5df8ed7896fc35dc10852885bc3a5906
Binary files /dev/null and b/utils/laugh_tests/mizoguchi1990/verification_data/mizoguchi1990_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/mizoguchi1990/verification_data/runinfo.txt b/utils/laugh_tests/mizoguchi1990/verification_data/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5cb0c6864c9416849bb5eb3648b44940ab387d6b
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/verification_data/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=19 - mi=08 - ss=48.977
diff --git a/utils/laugh_tests/mizoguchi1990/verify_mizoguchi.py b/utils/laugh_tests/mizoguchi1990/verify_mizoguchi.py
new file mode 100644
index 0000000000000000000000000000000000000000..738119a37751c662d0193ae9c617edd256815f7e
--- /dev/null
+++ b/utils/laugh_tests/mizoguchi1990/verify_mizoguchi.py
@@ -0,0 +1,112 @@
+from os import listdir
+from os.path import isfile, join
+from pathlib import Path
+import xarray as xr
+import numpy as np
+
+
+def verify(verified_data_path, data_to_compare_path, output_variables, numHRU):
+    try:
+        verified_dataset = xr.open_dataset(verified_data_path)
+        to_compare_dataset = xr.open_dataset(data_to_compare_path)
+    except FileNotFoundError:
+        print("Check the variables \'verified_data_path\' and \'data_to_compare_path\'. They may not point to the correct output files or the output filenames may have changed.")
+        exit()
+
+    # Get the HRUs from the dataset into a list
+    for iHRU in range(0, numHRU):
+        verified_hru = verified_dataset.isel(hru=iHRU).copy()
+        hru_to_compare = to_compare_dataset.isel(hru=iHRU).copy()
+
+        for var in output_variables:
+            try:
+                if len(verified_hru[var].values) != len(hru_to_compare[var].values):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_hru[var].values))
+                    print("     hru_to_compare = ", len(hru_to_compare[var].values))
+                
+                verified_data = []
+                to_verify_data = []
+                if (verified_hru[var].values.ndim > 1):
+                    # 2D output case
+                    for list in verified_hru[var].values:
+                        for data in list:
+                            verified_data.append(data)
+                    
+                    for list in hru_to_compare[var].values:
+                        for data in list:
+                            to_verify_data.append(data)
+
+                else:
+                    # 1D output case
+                    for data in verified_hru[var].values:
+                        verified_data.append(data)
+                    
+                    for data in hru_to_compare[var].values:
+                        to_verify_data.append(data)
+
+                                    
+                # check length
+                if len(verified_data) != len(to_verify_data):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_data))
+                    print("     hru_to_compare = ", len(to_verify_data))
+
+                # check values
+                for elem in range(0, len(verified_data)):
+                    if verified_data[elem] != to_verify_data[elem]:
+                        print("variable -",var, "has different values at", elem)
+                        print("     verified_hru = ", verified_data[elem])
+                        print("     hru_to_compare = ", to_verify_data[elem])
+                        break
+
+            except TypeError:
+                print("variable - ", var, "Cannot be compared with len")
+                print("     verified_hru = ",verified_hru[var].values)
+                print("     hru_to_compare = ", hru_to_compare[var].values)
+
+
+numHRU = 1
+
+time = "time" 
+nSnow = "nSnow" 
+nSoil = "nSoil" 
+nLayers = "nLayers" 
+mLayerHeight = "mLayerHeight" 
+iLayerLiqFluxSoil = "iLayerLiqFluxSoil" 
+mLayerDepth = "mLayerDepth" 
+mLayerVolFracIce = "mLayerVolFracIce" 
+mLayerVolFracLiq = "mLayerVolFracLiq" 
+mLayerMatricHead = "mLayerMatricHead" 
+mLayerTranspire = "mLayerTranspire" 
+mLayerBaseflow = "mLayerBaseflow" 
+mLayerCompress = "mLayerCompress" 
+iLayerNrgFlux = "iLayerNrgFlux" 
+basin__TotalArea = "basin__TotalArea" 
+scalarGroundEvaporation = "scalarGroundEvaporation" 
+scalarSoilBaseflow = "scalarSoilBaseflow" 
+scalarSoilDrainage = "scalarSoilDrainage" 
+scalarInfiltration = "scalarInfiltration" 
+scalarSnowDrainage = "scalarSnowDrainage" 
+scalarSnowSublimation = "scalarSnowSublimation" 
+scalarThroughfallRain = "scalarThroughfallRain" 
+scalarThroughfallSnow = "scalarThroughfallSnow" 
+scalarRainfall = "scalarRainfall" 
+scalarSnowfall = "scalarSnowfall" 
+scalarRainPlusMelt = "scalarRainPlusMelt" 
+pptrate = "pptrate" 
+averageRoutedRunoff = "averageRoutedRunoff" 
+scalarSWE = "scalarSWE"
+fieldCapacity = "fieldCapacity"
+
+output_variables = [time, nSnow, nSoil, nLayers, mLayerHeight, iLayerLiqFluxSoil, \
+    mLayerDepth, mLayerVolFracIce, mLayerVolFracLiq, mLayerMatricHead, mLayerTranspire, \
+    mLayerBaseflow, mLayerCompress, iLayerNrgFlux, basin__TotalArea, scalarGroundEvaporation, \
+    scalarSoilBaseflow, scalarSoilDrainage, scalarInfiltration, scalarSnowDrainage, \
+    scalarSnowSublimation, scalarThroughfallRain, scalarThroughfallSnow, scalarRainfall, \
+    scalarSnowfall, scalarRainPlusMelt, pptrate, averageRoutedRunoff, \
+    scalarSWE, fieldCapacity]
+
+verified_data_path = Path("./verification_data/mizoguchi1990_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/mizoguchi1990GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/config/exp1/Summa_Actors_Settings.json b/utils/laugh_tests/vanderborght2005/config/exp1/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..ffded0d780cf2e769d791e5e4ea6fbc5e80d672b
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/config/exp1/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": false,
+        "host": "localhost",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100000,
+        "num_hru_per_batch": 500
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 250
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp1.txt",
+        "outputCSV": false,
+        "csvPath": "/scratch/kck540/csv/"
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 1
+    }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/config/exp2/Summa_Actors_Settings.json b/utils/laugh_tests/vanderborght2005/config/exp2/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..02070005214c2425b46f389847b08b5c5b196f1b
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/config/exp2/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": false,
+        "host": "localhost",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100000,
+        "num_hru_per_batch": 500
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 250
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp2.txt",
+        "outputCSV": false,
+        "csvPath": "/scratch/kck540/csv/"
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 1
+    }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/config/exp3/Summa_Actors_Settings.json b/utils/laugh_tests/vanderborght2005/config/exp3/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..32e926578fc8e95c832cdc400c2e3d7ac1c76633
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/config/exp3/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": false,
+        "host": "localhost",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100000,
+        "num_hru_per_batch": 500
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 250
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp3.txt",
+        "outputCSV": false,
+        "csvPath": "/scratch/kck540/csv/"
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 1
+    }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/forcing_data/vanderborght2005_forcing.nc b/utils/laugh_tests/vanderborght2005/forcing_data/vanderborght2005_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..c9d016e5d7e44c240f8982338c7c4a09714a5e0e
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/forcing_data/vanderborght2005_forcing.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/output/runinfo.txt b/utils/laugh_tests/vanderborght2005/output/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fdd94f435172d545130027b4588888294a90c698
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/output/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=19 - mi=26 - ss=57.317
diff --git a/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp1GRU1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp1GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..389efb9d6fdd3efa2fce4c47f99dbb34e9164bbf
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp1GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp2GRU1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp2GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..9ed72de5cbe91cc37bbea9af33127f011e576243
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp2GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp3GRU1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp3GRU1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..06a160724b61e8833821c158c2d00e720e21db49
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/output/vanderborght2005_exp3GRU1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/run_test_summa.sh b/utils/laugh_tests/vanderborght2005/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..afdec1fddfbb3ac82ee20da754ae290f2ee64782
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/run_test_summa.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp1.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp2.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp3.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/run_test_summa_actors.sh b/utils/laugh_tests/vanderborght2005/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..632f2091eb64db4bd2c9758f4cd88002441ec98a
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/run_test_summa_actors.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/vanderborght2005/config/exp1
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/vanderborght2005/config/exp2
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/vanderborght2005/config/exp3
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/GENPARM.TBL b/utils/laugh_tests/vanderborght2005/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/vanderborght2005/settings/MPTABLE.TBL b/utils/laugh_tests/vanderborght2005/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/vanderborght2005/settings/Model_Output.txt b/utils/laugh_tests/vanderborght2005/settings/Model_Output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d27936ba2357ecbd9a594ab0b9dcca44917333ff
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/Model_Output.txt
@@ -0,0 +1,40 @@
+! ---------
+! model variables
+! ---------
+nSnow                     | 1
+nSoil                     | 1
+pptrate                   | 1
+airtemp                   | 1
+scalarRainPlusMelt        | 1
+scalarSWE                 | 1
+scalarThroughfallSnow     | 1
+scalarThroughfallRain     | 1
+scalarSnowSublimation     | 1
+scalarInfiltration        | 1
+scalarExfiltration        | 1
+scalarSurfaceRunoff       | 1
+scalarSurfaceTemp         | 1
+scalarSenHeatTotal        | 1
+scalarLatHeatTotal        | 1
+mLayerHeight              | 1
+iLayerHeight              | 1
+iLayerLiqFluxSoil         | 1
+mLayerTemp                | 1
+mLayerDepth               | 1
+mLayerLiqFluxSoil         | 1
+mLayerVolFracIce          | 1
+mLayerVolFracLiq          | 1
+mLayerVolFracWat          | 1
+mLayerMatricHead          | 1
+basin__TotalArea          | 1
+basin__SurfaceRunoff      | 1
+basin__ColumnOutflow      | 1
+basin__AquiferStorage     | 1
+basin__AquiferRecharge    | 1
+basin__AquiferBaseflow    | 1
+basin__AquiferTranspire   | 1
+averageInstantRunoff      | 1
+averageRoutedRunoff       | 1
+fieldCapacity             | 1
+scalarLAI                 | 1
+scalarSAI                 | 1
diff --git a/utils/laugh_tests/vanderborght2005/settings/SOILPARM.TBL b/utils/laugh_tests/vanderborght2005/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/vanderborght2005/settings/VEGPARM.TBL b/utils/laugh_tests/vanderborght2005/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp1.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc9df573e90b6a5691fb24618a620dd82d262011
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp1.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' ! 
+simEndTime           '1990-01-01 01:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01' 
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp1.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp1' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp2.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..95d7d4ce7ea59822d000c65cfcfd50b5df5e137e
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp2.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' !
+simEndTime           '1990-01-01 01:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01' 
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp2.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp2' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp3.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c0ef7a680830413df0c824370fca27b35393acb4
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_vanderborght2005_exp3.txt
@@ -0,0 +1,22 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' !
+simEndTime           '1990-01-01 01:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/output/' !  output_path
+forcingFreq          'month'  ! the frequeny of forcing files (month, year)
+forcingStart         '1990-01-01' 
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp3.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp3' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp1.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9a62a876978d4834839e90d158b3a4c9fff35366
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp1.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' ! 
+simEndTime           '1990-01-01 01:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp1.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp1' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp2.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6491b089bdfdbdd1a0546ca767b88eac3271b25b
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp2.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' !
+simEndTime           '1990-01-01 01:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp2.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp2' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp3.txt b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c6bbe1aec9d3fb4685529d20673c7fdbf4c5508
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_fileManager_verify_vanderborght2005_exp3.txt
@@ -0,0 +1,20 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '1990-01-01 00:00' !
+simEndTime           '1990-01-01 01:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/Summa-Actors/utils/laugh_tests/vanderborght2005/settings/' !  setting_path
+forcingPath          '/Summa-Actors/utils/laugh_tests/vanderborght2005/forcing_data/' !  input_path
+outputPath           '/Summa-Actors/utils/laugh_tests/vanderborght2005/verification_data/' !  output_path
+decisionsFile        'summa_zDecisions_vanderborght2005.txt' !  decision
+outputControlFile    'Model_Output.txt' !  ouput_file
+globalHruParamFile   'summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'summa_zParamTrial_vanderborght2005_exp3.nc' !  para_trial
+forcingListFile      'summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'summa_zInitialCond_vanderborght2005.nc' !  initial_cond
+outFilePrefix        'vanderborght2005_exp3' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/vanderborght2005/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zDecisions_vanderborght2005.txt b/utils/laugh_tests/vanderborght2005/settings/summa_zDecisions_vanderborght2005.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6d50dc7f44b4b52a93dc23ff7a0e971910cb467e
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_zDecisions_vanderborght2005.txt
@@ -0,0 +1,170 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA         ! (03) soil-category dateset
+vegeParTbl                      USGS            ! (04) vegetation category dataset
+soilStress                      NoahType        ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry       ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive        ! (07) choice of numerical method
+fDerivMeth                      analytic        ! (08) method used to calculate flux derivatives
+LAI_method                      monTable        ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform        ! (10) form of Richard's equation
+groundwatr                      noXplict        ! (11) choice of groundwater parameterization
+hc_profile                      constant        ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      zeroFlux        ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux        ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      liq_flux        ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      drainage        ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988    ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      difTrans        ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow       ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy  ! (20) choice of wind profile through the canopy
+astability                      louisinv        ! (21) choice of stability function
+canopySrad                      CLM_2stream     ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay        ! (23) choice of albedo representation
+compaction                      anderson        ! (24) choice of compaction routine
+snowLayers                      CLM_2010        ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      jrdn1991        ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      mixConstit      ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn     ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay        ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1998     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp1.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp2.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp3.txt
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zForcingFileList.txt b/utils/laugh_tests/vanderborght2005/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..449994a2c271f68eab1f4430eb769ec08e16e1f2
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'vanderborght2005_forcing.nc'
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zForcingInfo_vanderborght2005.txt b/utils/laugh_tests/vanderborght2005/settings/summa_zForcingInfo_vanderborght2005.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6163dd00baaa63551343468719b645529ad92479
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_zForcingInfo_vanderborght2005.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | celia1990_forcing.txt  ! name of the forcing data file (must be in single quotes)
+ncols          | 13                     ! number of columns in the forcing file
+iyyy           | 1                      ! year
+im             | 2                      ! month
+id             | 3                      ! day
+ih             | 4                      ! hour
+imin           | 5                      ! minute
+pptrate        | 7                      ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                      ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                      ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                     ! air temperature                 (K)
+windspd        | 11                     ! windspeed                       (m/s)
+airpres        | 12                     ! pressure                        (Pa)
+spechum        | 13                     ! specific humidity               (g/g)
+data_step      | 1800                   ! length of time step (seconds)
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zInitialCond_vanderborght2005.nc b/utils/laugh_tests/vanderborght2005/settings/summa_zInitialCond_vanderborght2005.nc
new file mode 100644
index 0000000000000000000000000000000000000000..c7f98a1926eb620c1e93e39efc21ee1f1177903f
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/settings/summa_zInitialCond_vanderborght2005.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/vanderborght2005/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..f9f04385edc2e453fa0a7df385ac1a1fe9c991d1
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/vanderborght2005/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5f716d75d7b89700b973fcb3d121513883ab4d92
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |      -0.7500 |    -100.0000 |      -0.0100
+lowerBoundHead            |     -10.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.1600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0600 |       0.0100 |       0.1000
+k_snow                    |       0.0150 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       1.0000 |       0.0100 |       3.0000
+summerLAI                 |       3.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       0.5000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.0750 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |      20.0000 |       0.0500 |     100.0000
+heightCanopyBottom        |       2.0000 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      10.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       0.0000 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |       5.5000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.2000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.4010 |       0.3000 |       0.6000
+theta_sat                 |       0.5500 |       0.3000 |       0.6000
+theta_res                 |       0.1390 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.8400 |      -1.0000 |      -0.0100
+vGn_n                     |       1.3000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    |      7.5d-06 |       1.d-07 |     100.d-07
+k_macropore               |      1.0d-03 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       2.5000 |       0.1000 |     100.0000
+compactedDepth            |       1.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |      50.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-09 |       1.d-05 |       1.d-07
+f_impede                  |       2.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       1.0000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |     100.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-6 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-6 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp1.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp2.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/vanderborght2005/summa_fileManager_vanderborght2005_exp3.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp1.nc b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp1.nc
new file mode 100644
index 0000000000000000000000000000000000000000..03884900e57967574005d2c8ad9f3654f6d28a22
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp1.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp2.nc b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp2.nc
new file mode 100644
index 0000000000000000000000000000000000000000..24168048fb4fc80caa1fbfc17f61367b87da1d2d
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp2.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp3.nc b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp3.nc
new file mode 100644
index 0000000000000000000000000000000000000000..a7961568d210b5c7e983dde3dd5049c41ee5fd72
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/settings/summa_zParamTrial_vanderborght2005_exp3.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/verification_data/runinfo.txt b/utils/laugh_tests/vanderborght2005/verification_data/runinfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..10e395043691fd103d4ac68239f4c0768d68f00f
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/verification_data/runinfo.txt
@@ -0,0 +1 @@
+ Run start time on system:  ccyy=2022 - mm=08 - dd=16 - hh=19 - mi=29 - ss=48.969
diff --git a/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp1_G1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp1_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..12092bcbc3c3c44661bfaee121ab38d412ac58ba
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp1_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp2_G1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp2_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..bf0d8df63e5154522394c43bd4c8b22317f82ca2
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp2_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp3_G1-1_timestep.nc b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp3_G1-1_timestep.nc
new file mode 100644
index 0000000000000000000000000000000000000000..13cf977cc83ad4ddde41d01206abd8ee0f310842
Binary files /dev/null and b/utils/laugh_tests/vanderborght2005/verification_data/vanderborght2005_exp3_G1-1_timestep.nc differ
diff --git a/utils/laugh_tests/vanderborght2005/verify_vanderborght.py b/utils/laugh_tests/vanderborght2005/verify_vanderborght.py
new file mode 100644
index 0000000000000000000000000000000000000000..b9d1104d9a473ccfc1f15322366f609f42b6d104
--- /dev/null
+++ b/utils/laugh_tests/vanderborght2005/verify_vanderborght.py
@@ -0,0 +1,127 @@
+from os import listdir
+from os.path import isfile, join
+from pathlib import Path
+import xarray as xr
+import numpy as np
+
+
+def verify(verified_data_path, data_to_compare_path, output_variables, numHRU):
+    try:
+        verified_dataset = xr.open_dataset(verified_data_path)
+        to_compare_dataset = xr.open_dataset(data_to_compare_path)
+    except FileNotFoundError:
+        print("Check the variables \'verified_data_path\' and \'data_to_compare_path\'. They may not point to the correct output files or the output filenames may have changed.")
+        exit()
+
+    # Get the HRUs from the dataset into a list
+    for iHRU in range(0, numHRU):
+        verified_hru = verified_dataset.isel(hru=iHRU).copy()
+        hru_to_compare = to_compare_dataset.isel(hru=iHRU).copy()
+
+        for var in output_variables:
+            try:
+                if len(verified_hru[var].values) != len(hru_to_compare[var].values):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_hru[var].values))
+                    print("     hru_to_compare = ", len(hru_to_compare[var].values))
+                
+                verified_data = []
+                to_verify_data = []
+                if (verified_hru[var].values.ndim > 1):
+                    # 2D output case
+                    for list in verified_hru[var].values:
+                        for data in list:
+                            verified_data.append(data)
+                    
+                    for list in hru_to_compare[var].values:
+                        for data in list:
+                            to_verify_data.append(data)
+
+                else:
+                    # 1D output case
+                    for data in verified_hru[var].values:
+                        verified_data.append(data)
+                    
+                    for data in hru_to_compare[var].values:
+                        to_verify_data.append(data)
+
+                                    
+                # check length
+                if len(verified_data) != len(to_verify_data):
+                    print("ERROR: output variable", var, "does not contain the same amount of data")
+                    print("     verified_hru = ", len(verified_data))
+                    print("     hru_to_compare = ", len(to_verify_data))
+
+                # check values
+                for elem in range(0, len(verified_data)):
+                    if verified_data[elem] != to_verify_data[elem]:
+                        print("variable -",var, "has different values at", elem)
+                        print("     verified_hru = ", verified_data[elem])
+                        print("     hru_to_compare = ", to_verify_data[elem])
+                        break
+
+            except TypeError:
+                print("variable - ", var, "Cannot be compared with len")
+                print("     verified_hru = ",verified_hru[var].values)
+                print("     hru_to_compare = ", hru_to_compare[var].values)
+
+
+numHRU = 1
+
+nSnow = "nSnow"
+nSoil = "nSoil"
+pptrate = "pptrate"
+airtemp = "airtemp"
+scalarRainPlusMelt = "scalarRainPlusMelt"
+scalarSWE = "scalarSWE"
+scalarThroughfallSnow = "scalarThroughfallSnow"
+scalarThroughfallRain = "scalarThroughfallRain"
+scalarSnowSublimation = "scalarSnowSublimation"
+scalarInfiltration = "scalarInfiltration"
+scalarExfiltration = "scalarExfiltration"
+scalarSurfaceRunoff = "scalarSurfaceRunoff"
+scalarSurfaceTemp = "scalarSurfaceTemp"
+scalarSenHeatTotal = "scalarSenHeatTotal"
+scalarLatHeatTotal = "scalarLatHeatTotal"
+mLayerHeight = "mLayerHeight"
+iLayerHeight = "iLayerHeight"
+iLayerLiqFluxSoil = "iLayerLiqFluxSoil"
+mLayerTemp = "mLayerTemp"
+mLayerDepth = "mLayerDepth"
+mLayerLiqFluxSoil = "mLayerLiqFluxSoil"
+mLayerVolFracIce = "mLayerVolFracIce"
+mLayerVolFracLiq = "mLayerVolFracLiq"
+mLayerVolFracWat = "mLayerVolFracWat"
+mLayerMatricHead = "mLayerMatricHead"
+basin__TotalArea = "basin__TotalArea"
+basin__SurfaceRunoff = "basin__SurfaceRunoff"
+basin__ColumnOutflow = "basin__ColumnOutflow"
+basin__AquiferStorage = "basin__AquiferStorage"
+basin__AquiferRecharge = "basin__AquiferRecharge"
+basin__AquiferBaseflow = "basin__AquiferBaseflow"
+basin__AquiferTranspire = "basin__AquiferTranspire"
+averageInstantRunoff = "averageInstantRunoff"
+averageRoutedRunoff = "averageRoutedRunoff"
+fieldCapacity = "fieldCapacity"
+scalarLAI = "scalarLAI"
+scalarSAI = "scalarSAI"
+
+output_variables = [nSnow,nSoil,pptrate,airtemp,scalarRainPlusMelt,scalarSWE,scalarThroughfallSnow, \
+    scalarThroughfallRain,scalarSnowSublimation,scalarInfiltration,scalarExfiltration,scalarSurfaceRunoff, \
+    scalarSurfaceTemp,scalarSenHeatTotal,scalarLatHeatTotal,mLayerHeight,iLayerHeight,iLayerLiqFluxSoil, \
+    mLayerTemp,mLayerDepth,mLayerLiqFluxSoil,mLayerVolFracIce,mLayerVolFracLiq,mLayerVolFracWat, \
+    mLayerMatricHead,basin__TotalArea,basin__SurfaceRunoff,basin__ColumnOutflow,basin__AquiferStorage, \
+    basin__AquiferRecharge,basin__AquiferBaseflow,basin__AquiferTranspire,averageInstantRunoff, \
+    averageRoutedRunoff,fieldCapacity,scalarLAI,scalarSAI]
+
+verified_data_path = Path("./verification_data/vanderborght2005_exp1_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/vanderborght2005_exp1GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+verified_data_path = Path("./verification_data/vanderborght2005_exp2_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/vanderborght2005_exp2GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
+
+verified_data_path = Path("./verification_data/vanderborght2005_exp3_G1-1_timestep.nc")
+data_to_compare_path = Path("./output/vanderborght2005_exp3GRU1-1_timestep.nc")
+verify(verified_data_path, data_to_compare_path, output_variables, numHRU)
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/config/Summa_Actors_Settings.json b/utils/laugh_tests/wigmosta1999/config/Summa_Actors_Settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..85d67e14de7697397209c43e31815cf2312ce5a5
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/config/Summa_Actors_Settings.json
@@ -0,0 +1,32 @@
+{
+    "DistributedSettings": {
+        "distributed-mode": false,
+        "host": "localhost",
+        "port": 4444
+    },
+  
+    "SimulationSettings": {
+        "total_hru_count": 100000,
+        "num_hru_per_batch": 500
+    },
+  
+    "SummaActor": {
+        "OuputStructureSize": 250,
+        "maxGRUPerJob": 250
+    },
+  
+    "FileAccessActor": {
+        "num_vectors_in_output_manager": 1
+    },
+    
+    "JobActor": {
+        "FileManagerPath": "/gladwell/kck540/SummaActorsSettings/fileManager.txt",
+        "outputCSV": false,
+        "csvPath": "/scratch/kck540/csv/"
+    },
+  
+    "HRUActor": {
+        "printOutput": true,
+        "outputFrequency": 1
+    }
+}
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/forcing_data/sym.pro b/utils/laugh_tests/wigmosta1999/forcing_data/sym.pro
new file mode 100644
index 0000000000000000000000000000000000000000..6f7fb851e8844e4714a47f03cadd46615fb636d5
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/forcing_data/sym.pro
@@ -0,0 +1,167 @@
+; $Id: sym.pro,v 1.1.1.1 2012-10-20 16:41:41 mclark Exp $
+;-------------------------------------------------------------
+;+
+; NAME:
+;        SYM
+;
+; PURPOSE:
+;        define a standard sequence of plotting symbols
+;
+; CATEGORY:
+;        utility
+;
+; CALLING SEQUENCE:
+;        PLOT,X,Y,PSYM=SYM(NUMBER)
+;
+; INPUTS:
+;        NUMBER    ->   symbol number
+; 
+;               0 : dot
+;               1 : filled circle
+;               2 : filled upward triangle
+;               3 : filled downward triangle
+;               4 : filled diamond
+;               5 : filled square
+;               6 : open circle
+;               7 : open upward triangle
+;               8 : open downward triangle
+;               9 : open diamond
+;              10 : open square
+;              11 : plus
+;              12 : X
+;              13 : star
+;              14 : filled rightfacing triangle
+;              15 : filled leftfacing triangle
+;              16 : open rightfacing triangle
+;              17 : open leftfacing triangle
+;
+; KEYWORD PARAMETERS:
+;
+; OUTPUTS:
+;        function returns the symbol number to be used with PSYM= in the 
+;        PLOT command
+;
+; SUBROUTINES:
+;        SHOWSYM : Can be used to produce a symbol chart for reference
+;        (Type .r sym, then showsym, optionally with the /PS option).
+;        Extra keywords are passed to PLOTS, so you can e.g. choose
+;        a fancy color for your chart.
+;
+; REQUIREMENTS:
+;
+; NOTES:
+;        This function produces a side effect in that the USERSYM procedure
+;        is used to create a symbol definition. It's meant for usage within
+;        the PLOT, OPLOT, etc. command
+;
+; EXAMPLE:
+;        PLOT,X,Y,PSYM=SYM(0),SYMSIZE=3
+;                produces a plot with dots (standard symbol 3)
+;        FOR I=0,17 DO OPLOT,X+1,Y,PSYM=SYM(I),COLOR=I
+;                overplots 17 curves each with its own symbol
+;
+; MODIFICATION HISTORY:
+;        mgs, 22 Aug 1997: VERSION 1.00
+;        mgs, 10 Sep 1999: - added SHOWSYM procedure
+;
+;-
+; Copyright (C) 1997, Martin Schultz, Harvard University
+; This software is provided as is without any warranty
+; whatsoever. It may be freely used, copied or distributed
+; for non-commercial purposes. This copyright notice must be
+; kept with any copy of this software. If this software shall
+; be used commercially or sold as part of a larger package,
+; please contact the author to arrange payment.
+; Bugs and comments should be directed to mgs@io.harvard.edu
+; with subject "IDL routine sym"
+;-------------------------------------------------------------
+
+
+pro showsym,ps=ps,_EXTRA=e
+
+FORWARD_FUNCTION SYM
+
+
+   psflag = keyword_set(PS)
+   if (psflag) then begin
+      olddev = !D.NAME
+      set_plot,'PS'
+      device,/COLOR,bits=8,xsize=8,ysize=5,yoffset=3,/INCHES, $
+           filename='symbols.ps'
+   endif
+
+   plot,findgen(18),/NODATA,xstyle=4,YSTYLE=4
+   for i=0,17 do begin
+      plots,1,18-i,PSYM=SYM(i),_EXTRA=e
+      xyouts,0.5,18-i-0.2,strtrim(i,2),align=1.
+   endfor
+
+   if (psflag) then begin
+      device,/close
+      set_plot,olddev
+      print,'Symbollist created as symbols.ps.'
+   endif
+
+   return
+end
+
+; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+function sym,number
+ 
+   on_error,2                   ; return to caller
+
+   if(n_elements(number) eq 0) then return,1 ; default
+ 
+   result=8                     ; default: return psym=8, i.e. user defined symbol
+ 
+; define some help variables for
+; circle :
+   phi=findgen(32)*(!PI*2/32.)
+   phi = [ phi, phi(0) ]
+ 
+   case number of
+ 
+      0  : result = 3           ; dot
+      1  : usersym, cos(phi), sin(phi), /fill
+                            ; filled circle
+      2  : usersym, [ -1, 0, 1, -1 ], [ -1, 1, -1, -1 ], /fill
+                            ; filled upward triangle
+      3  : usersym, [ -1, 0, 1, -1 ], [  1, -1, 1, 1 ], /fill
+                            ; filled downward triangle
+      4  : usersym, [ 0, 1, 0, -1, 0 ], [ 1, 0, -1, 0, 1 ], /fill
+                            ; filled diamond
+      5  : usersym, [ -1, 1, 1, -1, -1 ], [ 1, 1, -1, -1, 1 ], /fill
+                            ; filled square
+      6  : usersym, cos(phi), sin(phi)
+                            ; open circle
+      7  : usersym, [ -1, 0, 1, -1 ], [ -1, 1, -1, -1 ]
+                            ; open upward triangle
+      8  : usersym, [ -1, 0, 1, -1 ], [  1, -1, 1, 1 ]
+                            ; open downward triangle
+      9  : usersym, [ 0, 1, 0, -1, 0 ], [ 1, 0, -1, 0, 1 ]
+                            ; open diamond
+      10  : usersym, [ -1, 1, 1, -1, -1 ], [ 1, 1, -1, -1, 1 ]
+                            ; open square
+      11  : result = 1          ; plus
+      12  : result = 7          ; X
+      13  : result = 2          ; star
+      14  : usersym, [ -1, 1, -1, -1 ], [1, 0, -1, 1 ], /fill
+                           ; rightfacing triangle, filled
+      15  : usersym, [ 1, -1, 1, 1 ], [1, 0, -1, 1 ], /fill
+                           ; leftfacing triangle, filled
+      16  : usersym, [ -1, 1, -1, -1 ], [1, 0, -1, 1 ]
+                           ; rightfacing triangle, open   
+      17  : usersym, [ 1, -1, 1, 1 ], [1, 0, -1, 1 ]
+                           ; leftfacing triangle, open   
+ 
+      else : begin
+         print,'invalid symbol number - set to 1'
+         result = 1
+      end
+ 
+   endcase
+ 
+   return,result
+end
+ 
diff --git a/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.nc b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.nc
new file mode 100644
index 0000000000000000000000000000000000000000..330b9fb6125b3f05a39bfcac3a8f6ec8b9df0b62
Binary files /dev/null and b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.nc differ
diff --git a/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.pro b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.pro
new file mode 100644
index 0000000000000000000000000000000000000000..2406ea9b05b2f3e95d571f1e228bf13b68ab12e4
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_forcing.pro
@@ -0,0 +1,72 @@
+pro wigmosta_forcing
+
+; define constants
+Tfreeze = 273.16d
+
+; define parameters
+dt = 3600.d ; (time step)
+
+; define plotting parameters
+window, 0, xs=1000, ys=1000, retain=2
+device, decomposed=0
+LOADCT, 39
+!P.BACKGROUND=255
+!P.CHARSIZE=2.5
+!P.COLOR=0
+erase, color=255
+!P.MULTI=[0,1,4]
+
+; define the number of days
+ndays = 42
+
+; define the number of time steps per hour
+nprhr = 3600.d/dt
+
+; define the number of steps per day
+nprdy = 86400.d/dt
+
+; define the number of time steps
+ntime = ndays*nprdy
+
+; define time in seconds
+stime = (dindgen(ntime)+1.d)*dt
+
+; define time in hours
+htime = stime/3600.
+
+; define forcing variables
+swrad = 100.d
+lwrad = 350.d
+awind =   0.d
+sphum = 1.d-3
+apres = 101325.d
+atemp = 273.16d + 10.d
+
+; define precipitation
+aPrcp = dblarr(ntime)
+
+; define the precipitation
+iRain = where(htime le 550.d, complement=iDry)
+aPrcp[iRain] = 20.d/3600.d  ; 20 mm/hour
+aPrcp[iDry]  = 0.d
+
+; define time
+atime = stime/86400.d + julday(1,1,2000,0,0,0.d)
+
+; make a forcing file
+openw, out_unit, 'wigmosta_forcing-exfiltrate.txt', /get_lun
+
+for itime=0,ntime-1 do begin
+ ; define date
+ caldat, atime[itime], im, id, iyyy, ih, imi, dsec
+ ; print synthetic "data"
+ printf, out_unit, iyyy, im, id, ih, imi, dsec, aprcp[itime], swrad, lwrad, atemp, awind, apres, sphum, $
+  format='(i4,1x,4(i2,1x),f6.1,1x,e14.6,1x,5(f10.3,1x),e12.3)'
+endfor
+
+; free up file unit
+free_lun, out_unit
+
+
+stop
+end
diff --git a/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_icond.pro b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_icond.pro
new file mode 100644
index 0000000000000000000000000000000000000000..8aed5b35228240460680fec0839a2c4254350d1c
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/forcing_data/wigmosta_icond.pro
@@ -0,0 +1,127 @@
+pro wigmosta_icond
+
+; used to create initial conditions for the synthetic test case
+
+; define vGn parameters (used to compute volumetric liquid water content)
+alpha     =  -0.5d     ; m-1
+n         =   1.5d
+m         =   1.d - 1.d/n
+theta_sat =   0.35d
+theta_res =   0.1d
+k_sat     =   0.00000075d
+f_impede  = -15.d
+
+; define the number of nodes
+nodes = 8
+
+; define soil depth (m)
+zsoil = 1.5d
+
+; define layer thickness
+z_lay = zsoil/double(nodes)
+
+; define vertical grid (m) -- positive downward
+z_dep = (dindgen(nodes+1)/double(nodes))*zsoil
+
+; define the mid-point of each layer
+z_m = (z_dep[0:nodes-1] + z_dep[1:nodes])/2.d
+
+; define the layer thickness
+z_i = z_dep[1:nodes] - z_dep[0:nodes-1]
+
+; define arrays
+zpress = replicate(-50000.d, nodes)
+z_temp = replicate(283.16d,nodes)
+ztheta = dblarr(nodes)
+
+for ilayer=0,nodes-1 do begin
+ ztheta[ilayer] = call_function('theta', zpress[ilayer], alpha, theta_res, theta_sat, n, m)
+endfor
+
+; write data to file
+openw, out_unit, 'wigmosta_icond.txt', /get_lun
+ for ilayer=0,nodes-1 do begin
+  printf, out_unit, 'soil', z_m[ilayer]-0.5d*z_i[ilayer], z_i[ilayer], $
+   z_temp[ilayer], 0.d,  ztheta[ilayer], zpress[ilayer], $
+   format='(a10,1x,2(f12.7,1x),f10.3,1x,f17.6,1x,f16.6,1x,f16.6)'
+ endfor
+free_lun, out_unit
+
+
+stop
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function k_psi, psi, alpha, k_sat, n, m
+
+; computes hydraulic conductivity given psi and soil hydraulic parameters alpha, k_sat, n, and m
+;  psi     = pressure (m)
+;  alpha   = scaling parameter (m-1)
+;  k_sat   = saturated hydraulic conductivity (m s-1)
+;  n       = vGn "n" parameter
+;  m       = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = k_sat * $
+ ( ( (1.d - (psi[ineg]*alpha)^(n-1.d) * (1.d + (psi[ineg]*alpha)^n)^(-m))^2.d ) / ( (1.d + (psi[ineg]*alpha)^n)^(m/2.d) ) )
+if (npos gt 0) then work[ipos] = k_sat
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function theta, psi, alpha, theta_res, theta_sat, n, m
+
+; computes volumetric water content based on psi and soil hydraulic parameters alpha, n, and m
+
+;  psi       = pressure (m)
+;  alpha     = scaling parameter (m-1)
+;  theta_res = residual volumetric water content (-)
+;  theta_sat = porosity (-)
+;  n         = vGn "n" parameter
+;  m         = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = theta_res + (theta_sat - theta_res)*(1.d + (alpha*psi[ineg])^n)^(-m)
+if (npos gt 0) then work[ipos] = theta_sat
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
+
+function dTheta_dPsi, psi, alpha, theta_res, theta_sat, n, m
+
+; computes the soil moisture capacity function, dTheta_dPsi (m-1)
+
+;  psi       = pressure (m)
+;  alpha     = scaling parameter (m-1)
+;  theta_res = residual volumetric water content (-)
+;  theta_sat = porosity (-)
+;  n         = vGn "n" parameter
+;  m         = vGn "m" parameter
+
+work = dblarr(n_elements(psi))
+
+ineg = where(psi lt 0.d, nneg, complement=ipos, ncomplement=npos)
+if (nneg gt 0) then work[ineg] = (theta_sat-theta_res) * $
+                      (-m*(1.d + (psi[ineg]*alpha)^n)^(-m-1.d)) * n*(psi[ineg]*alpha)^(n-1.d) * alpha
+if (npos gt 0) then work[ipos] = 0.d
+
+return, work
+
+end
+
+; *****************************************************************************************************************
+; *****************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/run_test_summa.sh b/utils/laugh_tests/wigmosta1999/run_test_summa.sh
new file mode 100755
index 0000000000000000000000000000000000000000..afe4927125202154f9eed9373db8c8264c2dc8a8
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/run_test_summa.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerClay.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerLoam.txt
+/SUMMA/bin/summa.exe -g 1 1 -m /Summa-Actors/utils/laugh_tests/miller1998/settings/summa_fileManager_verify_millerSand.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/run_test_summa_actors.sh b/utils/laugh_tests/wigmosta1999/run_test_summa_actors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..864e583b8aa024e5655c409fd77279f2a00b6088
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/run_test_summa_actors.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/clay
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/loam
+/Summa-Actors/bin/summaMain -g 1 -n 1 -c /Summa-Actors/utils/laugh_tests/miller1998/config/sand
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/settings/GENPARM.TBL b/utils/laugh_tests/wigmosta1999/settings/GENPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..17fc9172ba276dffbbb9dfa90cdcbc4eecc1070c
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/GENPARM.TBL
@@ -0,0 +1,36 @@
+General Parameters
+SLOPE_DATA
+9
+0.1 
+0.6
+1.0
+0.35
+0.55
+0.8
+0.63
+0.0
+0.0
+SBETA_DATA
+-2.0
+FXEXP_DATA
+2.0
+CSOIL_DATA
+2.00E+6
+SALP_DATA
+2.6
+REFDK_DATA
+2.0E-6
+REFKDT_DATA
+3.0
+FRZK_DATA
+0.15
+ZBOT_DATA
+-8.0
+CZIL_DATA
+0.1
+SMLOW_DATA
+0.5
+SMHIGH_DATA
+3.0
+LVCOEF_DATA
+0.5
diff --git a/utils/laugh_tests/wigmosta1999/settings/MPTABLE.TBL b/utils/laugh_tests/wigmosta1999/settings/MPTABLE.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..0f0c59c02cc2f03d2a168b8523ffa793773861a7
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/MPTABLE.TBL
@@ -0,0 +1,284 @@
+&noah_mp_usgs_veg_categories
+ VEG_DATASET_DESCRIPTION = "USGS"
+ NVEG = 27
+/
+&noah_mp_usgs_parameters
+ ! NVEG = 27
+ !  1: Urban and Built-Up Land
+ !  2: Dryland Cropland and Pasture
+ !  3: Irrigated Cropland and Pasture
+ !  4: Mixed Dryland/Irrigated Cropland and Pasture
+ !  5: Cropland/Grassland Mosaic
+ !  6: Cropland/Woodland Mosaic
+ !  7: Grassland
+ !  8: Shrubland
+ !  9: Mixed Shrubland/Grassland
+ ! 10: Savanna
+ ! 11: Deciduous Broadleaf Forest
+ ! 12: Deciduous Needleleaf Forest
+ ! 13: Evergreen Broadleaf Forest
+ ! 14: Evergreen Needleleaf Forest
+ ! 15: Mixed Forest
+ ! 16: Water Bodies
+ ! 17: Herbaceous Wetland
+ ! 18: Wooded Wetland
+ ! 19: Barren or Sparsely Vegetated
+ ! 20: Herbaceous Tundra
+ ! 21: Wooded Tundra
+ ! 22: Mixed Tundra
+ ! 23: Bare Ground Tundra
+ ! 24: Snow or Ice
+ ! 25: Playa
+ ! 26: Lava
+ ! 27: White Sand
+
+ ISURBAN   = 1
+ ISWATER   = 16
+ ISBARREN  = 19
+ ISSNOW    = 24
+ EBLFOREST = 13
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26    27
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,   0.1,
+ DLEAF =  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,  0.04,
+ Z0MVT =  1.00,  0.06,  0.06,  0.06,  0.06,  0.15,  0.06,  0.06,  0.06,  0.86,  0.80,  0.85,  1.10,  1.09,  0.80,  0.00,  0.06,  0.05,  0.00,  0.04,  0.06,  0.06,  0.03,  0.00,  0.01,  0.00,  0.00,
+ HVT   =  15.0,  0.50,  0.50,  0.50,  0.50,  1.25,  0.50,  0.50,  0.50,  16.0,  16.0,  18.0,  20.0,  20.0,  16.0,  0.00,  0.50,  0.80,  0.00,  0.50,  0.80,  0.80,  0.50,  0.00,  0.10,  0.00,  0.00,
+ HVB   =  1.00,  0.10,  0.10,  0.10,  0.10,  0.15,  0.05,  0.10,  0.10,  3.00,  3.50,  3.00,  4.00,  3.50,  3.00,  0.00,  0.05,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ DEN   =  0.01,  25.0,  25.0,  25.0,  25.0,  25.0,  100.,  10.0,  10.0,  0.02,  0.10,  0.28,  0.02,  0.28,  0.10,  0.01,  10.0,  0.10,  0.01,  1.00,  1.00,  1.00,  1.00,  0.00,  0.01,  0.01,  0.01,
+ RC    =  1.00,  0.08,  0.08,  0.08,  0.08,  0.08,  0.03,  0.12,  0.12,  3.00,  1.40,  1.20,  3.60,  1.20,  1.40,  0.01,  0.10,  1.40,  0.01,  0.30,  0.30,  0.30,  0.30,  0.00,  0.01,  0.01,  0.01,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.00,  0.11,  0.11,  0.11,  0.11,  0.11,  0.11,  0.07,  0.10,  0.10,  0.10,  0.07,  0.10,  0.07,  0.10,  0.00,  0.11,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.35,  0.45,  0.45,  0.45,  0.35,  0.45,  0.35,  0.45,  0.00,  0.58,  0.45,  0.00,  0.45,  0.45,  0.45,  0.45,  0.00,  0.45,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.00,  0.36,  0.36,  0.36,  0.36,  0.36,  0.36,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.16,  0.00,  0.36,  0.16,  0.00,  0.16,  0.16,  0.16,  0.16,  0.00,  0.16,  0.00,  0.00,
+          0.00,  0.58,  0.58,  0.58,  0.58,  0.58,  0.58,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.39,  0.00,  0.58,  0.39,  0.00,  0.39,  0.39,  0.39,  0.39,  0.00,  0.39,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.00,  0.07,  0.07,  0.07,  0.07,  0.07,  0.07,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.05,  0.00,  0.07,  0.05,  0.00,  0.05,  0.05,  0.05,  0.05,  0.00,  0.05,  0.00,  0.00,
+          0.00,  0.25,  0.25,  0.25,  0.25,  0.25,  0.25,  0.10,  0.10,  0.25,  0.25,  0.10,  0.25,  0.10,  0.25,  0.00,  0.25,  0.25,  0.00,  0.25,  0.25,  0.25,  0.25,  0.00,  0.25,  0.00,  0.00,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.000, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.220, 0.001, 0.000, 0.220, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+         0.000, 0.380, 0.380, 0.380, 0.380, 0.380, 0.380, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.000, 0.380, 0.001, 0.000, 0.380, 0.001, 0.001, 0.001, 0.000, 0.001, 0.000, 0.000,
+
+ XL    = 0.000, -0.30, -0.30, -0.30, -0.30, -0.30, -0.30, 0.010, 0.250, 0.010, 0.250, 0.010, 0.010, 0.010, 0.250, 0.000, -0.30, 0.250, 0.000, -0.30, 0.250, 0.250, 0.250, 0.000, 0.250, 0.000, 0.000,
+ CWPVT =   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,   3.0,
+ C3PSN =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+ KC25  =  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,  30.0,
+ AKC   =   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,   2.1,
+ KO25  =  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,  3.E4,
+ AKO   =   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,   1.2,
+ AVCMX =   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,   2.4,
+ AQE   =   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,   1.0,
+
+ LTOVRC=   0.0,   1.6,   1.8,   1.2,   1.2,  1.30,  0.50,  0.65,  0.70,  0.65,  0.55,   0.2,  0.55,   0.5,   0.5,   0.0,   1.4,   1.4,   0.0,   1.2,   1.3,   1.4,   1.0,   0.0,   1.0,   0.0,   0.0,
+ DILEFC=  0.00,  0.50,  0.50,  0.50,  0.35,  0.20,  0.20,  0.20,  0.50,  0.50,  0.60,  1.80,  0.50,  1.20,  0.80,  0.00,  0.40,  0.40,  0.00,  0.40,  0.30,  0.40,  0.30,  0.00,  0.30,  0.00,  0.00,
+ DILEFW=  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.20,  0.50,  0.20,  0.20,  4.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.00,  0.20,  0.20,  0.20,  0.20,  0.00,  0.20,  0.00,  0.00,
+ RMF25 =  0.00,  1.00,  1.40,  1.45,  1.45,  1.45,  1.80,  0.26,  0.26,  0.80,  3.00,  4.00,  0.65,  3.00,  3.00,  0.00,  3.20,  3.20,  0.00,  3.20,  3.00,  3.00,  3.00,  0.00,  3.00,  0.00,  0.00,
+ SLA   =    60,    80,    80,    80,    80,    80,    60,    60,    60,    50,    80,    80,    80,    80,    80,     0,    80,    80,     0,    80,    80,    80,    80,     0,    80,     0,     0,
+ FRAGR =  0.00,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.20,  0.10,  0.20,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.00,  0.10,  0.00,  0.00,
+ TMIN  =     0,   273,   273,   273,   273,   273,   273,   273,   273,   273,   273,   268,   273,   265,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ VCMX25=  0.00,  80.0,  80.0,  80.0,  60.0,  70.0,  40.0,  40.0,  40.0,  40.0,  60.0,  60.0,  60.0,  50.0,  55.0,  0.00,  50.0,  50.0,  0.00,  50.0,  50.0,  50.0,  50.0,  0.00,  50.0,  0.00,  0.00,
+ TDLEF =   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   278,   268,   278,   278,   268,     0,   268,   268,     0,   268,   268,   268,   268,     0,   268,     0,     0,
+ BP    = 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3,  2.E3, 1.E15,  2.E3, 1.E15, 1.E15,
+ MP    =    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    6.,    9.,    6.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,    9.,
+ QE25  =    0.,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.06,  0.00,  0.06,  0.00,  0.00,
+ RMS25 =  0.00,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.10,  0.32,  0.10,  0.64,  0.30,  0.90,  0.80,  0.00,  0.10,  0.10,  0.00,  0.10,  0.10,  0.10,  0.00,  0.00,  0.00,  0.00,  0.00,
+ RMR25 =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.20,  0.00,  0.00,  0.01,  0.01,  0.05,  0.05,  0.36,  0.03,  0.00,  0.00,  0.00,  0.00,  2.11,  2.11,  2.11,  0.00,  0.00,  0.00,  0.00,  0.00,
+ ARM   =   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,   2.0,
+ FOLNMX=  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,   1.5,  0.00,   1.5,  0.00,  0.00,
+ WDPOOL=  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  1.00,  0.00,  0.00,  1.00,  0.00,  0.00,  1.00,  1.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ WRRAT =  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  3.00,  3.00,  3.00,  30.0,  30.0,  30.0,  30.0,  30.0,  0.00,  0.00,  30.0,  0.00,  0.00,  3.00,  3.00,  0.00,  0.00,  0.00,  0.00,  0.00,
+ MRP   =  0.00,  0.23,  0.23,  0.23,  0.23,  0.23,  0.17,  0.19,  0.19,  0.40,  0.40,  0.37,  0.23,  0.37,  0.30,  0.00,  0.17,  0.40,  0.00,  0.17,  0.23,  0.20,  0.00,  0.00,  0.20,  0.00,  0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.3,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.3,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.2,   0.3,   0.1,   0.2,   0.1,   0.4,   0.4,   0.5,   0.4,   0.2,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.2,   0.2,   0.4,   0.2,   0.3,   0.1,   0.4,   0.7,   0.5,   0.5,   0.4,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.3,   0.3,   0.8,   0.2,   0.5,   0.1,   0.9,   1.3,   0.5,   0.5,   0.4,   0.0,   0.4,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.5,   0.2,   1.3,   0.1,   0.8,   0.1,   1.2,   1.2,   0.5,   0.6,   0.5,   0.0,   0.6,   0.6,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.4,   0.1,   1.1,   0.1,   0.5,   0.1,   1.6,   1.0,   0.5,   0.6,   0.5,   0.0,   0.5,   0.5,   0.0,   0.3,   0.3,   0.3,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.1,   0.1,   0.4,   0.1,   0.2,   0.1,   1.4,   0.8,   0.5,   0.7,   0.6,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.6,   0.6,   0.5,   0.6,   0.5,   0.0,   0.2,   0.2,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.1,   0.4,   0.1,   0.2,   0.1,   0.4,   0.5,   0.5,   0.5,   0.3,   0.0,   0.1,   0.1,   0.0,   0.1,   0.1,   0.1,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ LAIM  =   0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.4,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   1.6,   1.0,   0.0,   0.5,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   0.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.0,   3.5,   1.6,   1.0,   0.0,   0.6,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.7,   0.7,   0.7,   0.5,   0.7,   1.0,   1.5,   1.0,   1.2,   0.6,   3.5,   1.6,   1.0,   0.0,   0.7,   0.4,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.0,   1.2,   1.2,   1.2,   1.5,   1.2,   1.0,   2.0,   1.0,   3.0,   1.2,   3.5,   5.3,   2.3,   0.0,   1.2,   0.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   2.0,   3.0,   3.0,   3.0,   2.5,   3.0,   1.0,   2.5,   1.0,   4.7,   2.0,   3.5,   5.5,   3.5,   0.0,   3.0,   0.7,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   3.5,   3.5,   3.5,   3.5,   3.5,   1.0,   3.0,   1.0,   4.5,   2.6,   3.5,   5.3,   4.3,   0.0,   3.5,   1.7,   0.0,   2.0,   2.0,   2.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   3.0,   1.5,   1.5,   1.5,   3.5,   1.5,   1.0,   2.5,   1.0,   3.4,   1.7,   3.5,   5.3,   3.3,   0.0,   1.5,   3.0,   0.0,   1.0,   1.0,   1.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   1.5,   0.7,   0.7,   0.7,   2.0,   0.7,   1.0,   1.5,   1.0,   1.2,   1.0,   3.5,   4.2,   2.2,   0.0,   0.7,   2.5,   0.0,   0.5,   0.5,   0.5,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.6,   0.6,   0.6,   1.0,   0.6,   1.0,   1.0,   1.0,   0.3,   0.5,   3.5,   2.2,   1.2,   0.0,   0.6,   1.6,   0.0,   0.2,   0.2,   0.2,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.5,   0.5,   0.5,   0.0,   0.5,   1.0,   1.0,   1.0,   0.0,   0.2,   3.5,   2.2,   1.2,   0.0,   0.5,   0.8,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.4,   0.4,   0.4,   0.0,   0.4,   1.0,   1.0,   1.0,   0.0,   0.0,   3.5,   2.2,   1.2,   0.0,   0.4,   0.4,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+
+ SLAREA=0.0228,0.0200,0.0200,0.0295,0.0223,0.0277,0.0060,0.0227,0.0188,0.0236,0.0258,0.0200,0.0200,0.0090,0.0223,0.0422,0.0390,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,  0.02,
+
+! Five types, one row for each type.
+ EPS   = 41.87,  0.00,  0.00,  2.52,  0.04, 17.11,  0.02, 21.62,  0.11, 22.80, 46.86,  0.00,  0.00,  0.46, 30.98,  2.31,  1.63,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          0.98,  0.00,  0.00,  0.16,  0.09,  0.28,  0.05,  0.92,  0.22,  0.59,  0.38,  0.00,  0.00,  3.34,  0.96,  1.47,  1.07,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+          1.82,  0.00,  0.00,  0.23,  0.05,  0.81,  0.03,  1.73,  1.26,  1.37,  1.84,  0.00,  0.00,  1.85,  1.84,  1.70,  1.21,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+           0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,
+/
+
+
+&noah_mp_modis_veg_categories
+ VEG_DATASET_DESCRIPTION = "modified igbp modis noah"
+ NVEG = 20
+/
+
+&noah_mp_modis_parameters
+! 1          'Evergreen Needleleaf Forest'                       -> USGS 14
+! 2,         'Evergreen Broadleaf Forest'                        -> USGS 13
+! 3,         'Deciduous Needleleaf Forest'                       -> USGS 12
+! 4,         'Deciduous Broadleaf Forest'                        -> USGS 11
+! 5,         'Mixed Forests'                                     -> USGS 15
+! 6,         'Closed Shrublands'                                 -> USGS  8 "shrubland"
+! 7,         'Open Shrublands'                                   -> USGS  9 "shrubland/grassland"
+! 8,         'Woody Savannas'                                    -> USGS  8 "shrubland"
+! 9,         'Savannas'                                          -> USGS 10
+! 10,        'Grasslands'                                        -> USGS  7
+! 11         'Permanent wetlands'                                -> avg of USGS 17 and 18 (herb. wooded wetland)
+! 12,        'Croplands'                                         -> USGS  2 "dryland cropland"
+! 13,        'Urban and Built-Up'                                -> USGS  1
+! 14         'cropland/natural vegetation mosaic'                -> USGS  5 "cropland/grassland"
+! 15,        'Snow and Ice'                                      -> USGS 24
+! 16,        'Barren or Sparsely Vegetated'                      -> USGS 19
+! 17,        'Water'                                             -> USGS 16
+! 18,        'Wooded Tundra'                                     -> USGS 21
+! 19,        'Mixed Tundra'                                      -> USGS 22
+! 20,        'Barren Tundra'                                     -> USGS 23
+
+ ISURBAN   = 13
+ ISWATER   = 17
+ ISBARREN  = 16
+ ISSNOW    = 15
+ EBLFOREST =  2
+
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ !          1       2       3       4       5       6       7       8       9      10      11      12      13      14      15      16      17      18      19      20
+ !---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ CH2OP =   0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,    0.1,
+ DLEAF =  0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,   0.04,
+ Z0MVT =  1.09,   1.10,   0.85,   0.80,   0.80,   0.06,   0.06,   0.06,   0.86,   0.06,  0.055,   0.06,   1.00,   0.06,   0.00,   0.00,   0.00,   0.06,   0.06,   0.03,
+! Z0MVT =  0.50,   0.50,   0.50,   0.50,   0.50,   0.05,   0.06,   0.05,   0.15,   0.12,  0.30,   0.15,   0.80,   0.14,   0.00,   0.01,   0.00,   0.30,   0.15,   0.10,
+ HVT   =  20.0,   20.0,   18.0,   16.0,   16.0,   0.50,   0.50,   0.50,   16.0,   0.50,   0.65,   0.50,   15.0,   0.50,   0.00,   0.00,   0.00,   0.80,   0.80,   0.50,
+ HVB   =  8.50,   8.00,   7.00,   11.5,   10.0,   0.10,   0.10,   0.10,   5.00,   0.05,  0.075,   0.10,   1.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+ DEN   =  0.28,   0.02,   0.28,   0.10,   0.10,   10.0,   10.0,   10.0,   0.02,   100.,   5.05,   25.0,   0.01,   25.0,   0.00,   0.01,   0.01,   1.00,   1.00,   1.00,
+ RC    =  1.20,   3.60,   1.20,   1.40,   1.40,   0.12,   0.12,   0.12,   3.00,   0.03,   0.75,   0.08,   1.00,   0.08,   0.00,   0.01,   0.01,   0.30,   0.30,   0.30,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOL  =  0.07,   0.10,   0.07,   0.10,   0.10,   0.07,   0.10,   0.07,   0.10,   0.11,  0.105,   0.11,   0.00,   0.11,   0.00,   0.00,   0.00,   0.10,   0.10,   0.10,
+          0.35,   0.45,   0.35,   0.45,   0.45,   0.35,   0.45,   0.35,   0.45,   0.58,  0.515,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.45,   0.45,   0.45,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ RHOS  =  0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.16,   0.36,   0.26,   0.36,   0.00,   0.36,   0.00,   0.00,   0.00,   0.16,   0.16,   0.16,
+          0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.39,   0.58,  0.485,   0.58,   0.00,   0.58,   0.00,   0.00,   0.00,   0.39,   0.39,   0.39,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUL  =  0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.05,   0.07,   0.06,   0.07,   0.00,   0.07,   0.00,   0.00,   0.00,   0.05,   0.05,   0.05,
+          0.10,   0.25,   0.10,   0.25,   0.25,   0.10,   0.10,   0.10,   0.25,   0.25,   0.25,   0.25,   0.00,   0.25,   0.00,   0.00,   0.00,   0.25,   0.25,   0.25,
+
+ ! Row 1:  Vis
+ ! Row 2:  Near IR
+ TAUS  = 0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.220, 0.1105,  0.220,  0.000,  0.220,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+         0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.001,  0.380, 0.1905,  0.380,  0.000,  0.380,  0.000,  0.000,  0.000,  0.001,  0.001,  0.001,
+
+ XL    = 0.010,  0.010,  0.010,  0.250,  0.250,  0.010,  0.250,  0.010,  0.010,  -0.30, -0.025,  -0.30,  0.000,  -0.30,  0.000,  0.000,  0.000,  0.250,  0.250,  0.250,
+ CWPVT =   3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,    3.0,
+! CWPVT =  0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,
+ C3PSN =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+ KC25  =  30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,   30.0,
+ AKC   =   2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,    2.1,
+ KO25  =  3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,   3.E4,
+ AKO   =   1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,    1.2,
+ AVCMX =   2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,    2.4,
+ AQE   =   1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,    1.0,
+
+ LTOVRC=   0.5,   0.55,    0.2,   0.55,    0.5,   0.65,   0.70,   0.65,   0.65,   0.50,    1.4,    1.6,    0.0,    1.2,    0.0,    0.0,    0.0,    1.3,    1.4,    1.0,
+ DILEFC=  1.20,   0.50,   1.80,   0.60,   0.80,   0.20,   0.50,   0.20,   0.50,   0.20,    0.4,   0.50,   0.00,   0.35,   0.00,   0.00,   0.00,   0.30,   0.40,   0.30,
+ DILEFW=  0.20,   4.00,   0.20,   0.20,   0.20,   0.20,   0.20,   0.20,   0.50,   0.10,    0.2,   0.20,   0.00,   0.20,   0.00,   0.00,   0.00,   0.20,   0.20,   0.20,
+ RMF25 =  3.00,   0.65,   4.00,   3.00,   3.00,   0.26,   0.26,   0.26,   0.80,   1.80,    3.2,   1.00,   0.00,   1.45,   0.00,   0.00,   0.00,   3.00,   3.00,   3.00,
+ SLA   =    80,     80,     80,     80,     80,     60,     60,     60,     50,     60,     80,     80,     60,     80,      0,      0,      0,     80,     80,     80,
+ FRAGR =  0.10,   0.20,   0.10,   0.20,   0.10,   0.20,   0.20,   0.20,   0.20,   0.20,    0.1,   0.20,   0.00,   0.20,   0.00,   0.10,   0.00,   0.10,   0.10,   0.10,
+ TMIN  =   265,    273,    268,    273,    268,    273,    273,    273,    273,    273,    268,    273,      0,    273,      0,      0,      0,    268,    268,    268,
+ VCMX25=  50.0,   60.0,   60.0,   60.0,   55.0,   40.0,   40.0,   40.0,   40.0,   40.0,   50.0,   80.0,   0.00,   60.0,   0.00,   0.00,   0.00,   50.0,   50.0,   50.0,
+ TDLEF =   278,    278,    268,    278,    268,    278,    278,    278,    278,    278,    268,    278,    278,    278,      0,      0,      0,    268,    268,    268,
+ BP    =  2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,  1.E15,   2.E3,   2.E3,   2.E3,
+ MP    =    6.,     9.,     6.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,     9.,
+ QE25  =  0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.06,   0.00,   0.06,   0.00,   0.06,   0.00,   0.06,   0.06,   0.06,
+ RMS25 =  0.90,   0.30,   0.64,   0.10,   0.80,   0.10,   0.10,   0.10,   0.32,   0.10,   0.10,   0.10,   0.00,   0.10,   0.00,   0.00,   0.00,   0.10,   0.10,   0.00,
+ RMR25 =  0.36,   0.05,   0.05,   0.01,   0.03,   0.00,   0.00,   0.00,   0.01,   1.20,    0.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   2.11,   2.11,   0.00,
+ ARM   =   2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,    2.0,
+ FOLNMX=   1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,    1.5,   0.00,    1.5,   0.00,    1.5,   0.00,    1.5,    1.5,    1.5,
+ WDPOOL=  1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   1.00,   0.00,    0.5,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   1.00,   1.00,   0.00,
+ WRRAT =  30.0,   30.0,   30.0,   30.0,   30.0,   3.00,   3.00,   3.00,   3.00,   0.00,   15.0,   0.00,   0.00,   0.00,   0.00,   0.00,   0.00,   3.00,   3.00,   0.00,
+ MRP   =  0.37,   0.23,   0.37,   0.40,   0.30,   0.19,   0.19,   0.19,   0.40,   0.17,  0.285,   0.23,   0.00,   0.23,   0.00,   0.00,   0.00,   0.23,   0.20,   0.00,
+
+! Monthly values, one row for each month:
+ SAIM  =   0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.3,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.3,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.4,    0.5,    0.4,    0.4,    0.2,    0.1,    0.2,    0.1,    0.1,    0.3,    0.1,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+           0.5,    0.5,    0.7,    0.4,    0.4,    0.2,    0.3,    0.2,    0.1,    0.4,    0.2,    0.0,    0.0,    0.2,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    1.3,    0.9,    0.4,    0.2,    0.5,    0.2,    0.1,    0.8,    0.4,    0.0,    0.0,    0.3,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    1.2,    1.2,    0.5,    0.1,    0.8,    0.1,    0.1,    1.3,    0.6,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.6,    0.5,    1.0,    1.6,    0.5,    0.1,    0.5,    0.1,    0.1,    1.1,    0.5,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.3,    0.3,    0.0,
+           0.7,    0.5,    0.8,    1.4,    0.6,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.1,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.6,    0.5,    0.6,    0.6,    0.5,    0.1,    0.2,    0.1,    0.1,    0.4,    0.2,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           0.5,    0.5,    0.5,    0.4,    0.3,    0.1,    0.2,    0.1,    0.1,    0.4,    0.1,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.1,    0.1,    0.0,
+
+ LAIM  =   1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.4,    0.3,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.0,    1.0,    1.0,    1.0,    1.0,    1.0,    0.5,   0.45,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.0,    0.3,    1.0,    1.0,    1.0,    1.0,    1.0,    0.6,    0.5,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           1.6,    4.5,    0.6,    1.2,    1.0,    1.0,    1.5,    1.0,    1.0,    0.7,   0.55,    0.0,    0.0,    0.7,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           5.3,    4.5,    1.2,    3.0,    2.3,    1.0,    2.0,    1.0,    1.0,    1.2,   0.85,    1.0,    0.0,    1.2,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           5.5,    4.5,    2.0,    4.7,    3.5,    1.0,    2.5,    1.0,    1.0,    3.0,   1.85,    2.0,    0.0,    3.0,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           5.3,    4.5,    2.6,    4.5,    4.3,    1.0,    3.0,    1.0,    1.0,    3.5,    2.6,    3.0,    0.0,    3.5,    0.0,    0.0,    0.0,    2.0,    2.0,    0.0,
+           5.3,    4.5,    1.7,    3.4,    3.3,    1.0,    2.5,    1.0,    1.0,    1.5,   2.25,    3.0,    0.0,    1.5,    0.0,    0.0,    0.0,    1.0,    1.0,    0.0,
+           4.2,    4.5,    1.0,    1.2,    2.2,    1.0,    1.5,    1.0,    1.0,    0.7,    1.6,    1.5,    0.0,    0.7,    0.0,    0.0,    0.0,    0.5,    0.5,    0.0,
+           2.2,    4.5,    0.5,    0.3,    1.2,    1.0,    1.0,    1.0,    1.0,    0.6,    1.1,    0.0,    0.0,    0.6,    0.0,    0.0,    0.0,    0.2,    0.2,    0.0,
+           2.2,    4.5,    0.2,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.5,   0.65,    0.0,    0.0,    0.5,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           2.2,    4.5,    0.0,    0.0,    1.2,    1.0,    1.0,    1.0,    1.0,    0.4,    0.4,    0.0,    0.0,    0.4,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+
+! LAIM  =   5.1,    3.3,    0.0,    1.9,    3.0,    1.0,    0.8,    0.5,    0.5,    0.7,    0.3,    1.8,    0.0,    2.4,    0.0,    0.0,    0.0,    0.6,    0.7,    0.0,
+!           5.0,    3.6,    0.0,    1.9,    2.9,    1.0,    0.6,    1.0,    1.0,    0.7,   0.45,    1.9,    0.0,    2.6,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.1,    4.4,    0.0,    2.1,    3.3,    1.0,    0.8,    1.8,    1.7,    1.1,    0.5,    2.6,    0.0,    2.9,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.3,    5.4,    0.6,    2.5,    4.0,    1.0,    0.9,    2.6,    2.9,    1.7,   0.55,    3.9,    0.0,    3.4,    0.0,    0.0,    0.0,    0.4,    0.4,    0.0,
+!           5.9,    6.2,    1.2,    3.1,    5.0,    1.0,    1.5,    3.4,    3.6,    2.5,   0.85,    5.2,    0.0,    4.0,    0.0,    0.0,    0.0,    0.8,    1.0,    0.0,
+!           6.3,    6.4,    2.0,    3.3,    5.4,    1.0,    2.1,    3.6,    3.5,    2.7,   1.85,    5.6,    0.0,    4.2,    0.0,    0.0,    0.0,    2.0,    2.3,    0.0,
+!           6.4,    5.9,    2.6,    3.3,    5.4,    1.0,    2.6,    3.4,    2.9,    2.8,    2.6,    5.3,    0.0,    4.1,    0.0,    0.0,    0.0,    3.3,    3.3,    0.0,
+!           6.1,    5.6,    1.7,    3.1,    5.0,    1.0,    2.4,    3.2,    2.7,    2.4,   2.25,    4.5,    0.0,    3.8,    0.0,    0.0,    0.0,    3.3,    3.0,    0.0,
+!           6.0,    5.3,    1.0,    2.9,    4.8,    1.0,    2.2,    2.9,    2.4,    2.1,    1.6,    4.1,    0.0,    3.7,    0.0,    0.0,    0.0,    2.8,    3.0,    0.0,
+!           5.5,    4.7,    0.5,    2.6,    4.1,    1.0,    1.6,    2.3,    1.8,    1.7,    1.1,    3.2,    0.0,    3.2,    0.0,    0.0,    0.0,    1.4,    1.4,    0.0,
+!           5.2,    4.0,    0.2,    2.2,    3.4,    1.0,    1.0,    1.5,    1.4,    1.3,   0.65,    2.3,    0.0,    2.7,    0.0,    0.0,    0.0,    0.5,    0.7,    0.0,
+!           5.1,    3.2,    0.0,    1.9,    3.0,    1.0,    0.9,    0.7,    0.7,    0.8,    0.4,    1.7,    0.0,    2.4,    0.0,    0.0,    0.0,    0.8,    0.7,    0.0,
+
+ SLAREA=0.0090, 0.0200, 0.0200, 0.0258, 0.0223, 0.0227, 0.0188, 0.0227, 0.0236, 0.0060, 0.0295, 0.0200, 0.0228, 0.0223,   0.02,   0.02, 0.0422,   0.02,   0.02,   0.02,
+
+! Five types, one row for each type.
+ EPS   =  0.46,   0.00,   0.00,  46.86,  30.98,  21.62,   0.11,  21.62,  22.80,   0.02,  0.815,   0.00,  41.87,   0.04,    0.0,    0.0,   2.31,    0.0,    0.0,    0.0,
+          3.34,   0.00,   0.00,   0.38,   0.96,   0.92,   0.22,   0.92,   0.59,   0.05,  0.535,   0.00,   0.98,   0.09,    0.0,    0.0,   1.47,    0.0,    0.0,    0.0,
+          1.85,   0.00,   0.00,   1.84,   1.84,   1.73,   1.26,   1.73,   1.37,   0.03,  0.605,   0.00,   1.82,   0.05,    0.0,    0.0,   1.70,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+           0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,    0.0,
+/
diff --git a/utils/laugh_tests/wigmosta1999/settings/SOILPARM.TBL b/utils/laugh_tests/wigmosta1999/settings/SOILPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..b87d1bae502460279b1e6389ff34c2d3ce842510
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/SOILPARM.TBL
@@ -0,0 +1,59 @@
+Soil Parameters
+STAS
+19,1   'BB      DRYSMC      F11     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     2.79,    0.010,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,   0.010,  0.92, 'SAND'
+2,     4.26,    0.028,    -1.044,   0.421,   0.383,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.82, 'LOAMY SAND'
+3,     4.74,    0.047,    -0.569,   0.434,   0.383,   0.141,  5.23E-6,  0.805E-5,   0.047,  0.60, 'SANDY LOAM'
+4,     5.33,    0.084,     0.162,   0.476,   0.360,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.25, 'SILT LOAM'
+5,     5.33,    0.084,     0.162,   0.476,   0.383,   0.759,  2.81E-6,  0.239E-4,   0.084,  0.10, 'SILT'
+6,     5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.40, 'LOAM'
+7,     6.66,    0.067,    -1.491,   0.404,   0.314,   0.135,  4.45E-6,  0.990E-5,   0.067,  0.60, 'SANDY CLAY LOAM'
+8,     8.72,    0.120,    -1.118,   0.464,   0.387,   0.617,  2.04E-6,  0.237E-4,   0.120,  0.10, 'SILTY CLAY LOAM'
+9,     8.17,    0.103,    -1.297,   0.465,   0.382,   0.263,  2.45E-6,  0.113E-4,   0.103,  0.35, 'CLAY LOAM'
+10,   10.73,    0.100,    -3.209,   0.406,   0.338,   0.098,  7.22E-6,  0.187E-4,   0.100,  0.52, 'SANDY CLAY'
+11,   10.39,    0.126,    -1.916,   0.468,   0.404,   0.324,  1.34E-6,  0.964E-5,   0.126,  0.10, 'SILTY CLAY'
+12,   11.55,    0.138,    -2.138,   0.468,   0.412,   0.468,  9.74E-7,  0.112E-4,   0.138,  0.25, 'CLAY'
+13,    5.25,    0.066,    -0.327,   0.439,   0.329,   0.355,  3.38E-6,  0.143E-4,   0.066,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,       0.0,     1.0,     0.0,     0.0,      0.0,       0.0,     0.0,  0.60, 'WATER'
+15,    2.79,    0.006,    -1.111,    0.20,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.07, 'BEDROCK'
+16,    4.26,    0.028,    -1.044,   0.421,   0.283,   0.036,  1.41E-5,  0.514E-5,   0.028,  0.25, 'OTHER(land-ice)'
+17,   11.55,    0.030,   -10.472,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    2.79,    0.006,    -0.472,   0.200,    0.17,   0.069,  1.41E-4,  0.136E-3,   0.006,  0.52, 'LAVA'
+19,    2.79,     0.01,    -0.472,   0.339,   0.236,   0.069,  1.07E-6,  0.608E-6,    0.01,  0.92, 'WHITE SAND'
+Soil Parameters
+STAS-RUC
+19,1   'BB      DRYSMC       HC     MAXSMC   REFSMC   SATPSI  SATDK       SATDW     WLTSMC  QTZ    '
+1,     4.05,    0.045,      1.47,   0.395,   0.236,   0.121,  1.76E-4,  0.608E-6,   0.068,  0.92, 'SAND'
+2,     4.38,    0.057,      1.41,   0.410,   0.383,   0.090,  1.56E-4,  0.514E-5,   0.075,  0.82, 'LOAMY SAND'
+3,     4.90,    0.065,      1.34,   0.435,   0.383,   0.218,  3.47E-5,  0.805E-5,   0.114,  0.60, 'SANDY LOAM'
+4,     5.30,    0.067,      1.27,   0.485,   0.360,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.25, 'SILT LOAM'
+5,     5.30,    0.034,      1.27,   0.485,   0.383,   0.786,  7.20E-6,  0.239E-4,   0.179,  0.10, 'SILT'
+6,     5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.40, 'LOAM'
+7,     7.12,    0.100,      1.18,   0.420,   0.314,   0.299,  6.30E-6,  0.990E-5,   0.175,  0.60, 'SANDY CLAY LOAM'
+8,     7.75,    0.089,      1.32,   0.477,   0.387,   0.356,  1.70E-6,  0.237E-4,   0.218,  0.10, 'SILTY CLAY LOAM'
+9,     8.52,    0.095,      1.23,   0.476,   0.382,   0.630,  2.45E-6,  0.113E-4,   0.250,  0.35, 'CLAY LOAM'
+10,   10.40,    0.100,      1.18,   0.426,   0.338,   0.153,  2.17E-6,  0.187E-4,   0.219,  0.52, 'SANDY CLAY'
+11,   10.40,    0.070,      1.15,   0.492,   0.404,   0.490,  1.03E-6,  0.964E-5,   0.283,  0.10, 'SILTY CLAY'
+12,   11.40,    0.068,      1.09,   0.482,   0.412,   0.405,  1.28E-6,  0.112E-4,   0.286,  0.25, 'CLAY'
+13,    5.39,    0.078,      1.21,   0.451,   0.329,   0.478,  6.95E-6,  0.143E-4,   0.155,  0.05, 'ORGANIC MATERIAL'
+14,     0.0,      0.0,      4.18,   1.0,     1.0,     0.0,      0.0,       0.0,     0.0,    0.00, 'WATER'
+15,    4.05,    0.004,      2.03,   0.200,   0.17,   0.121,  1.41E-4,  0.136E-3,   0.006,  0.60, 'BEDROCK'
+16,    4.90,    0.065,      2.10,   0.435,   0.283,   0.218,  3.47E-5,  0.514E-5,   0.114,  0.05, 'OTHER(land-ice)'
+17,   11.40,    0.030,      1.41,   0.468,   0.454,   0.468,  9.74E-7,  0.112E-4,   0.030,  0.60, 'PLAYA'
+18,    4.05,    0.006,      1.41,   0.200,   0.17,   0.069,  1.41E-4,  0.136E-3,   0.060,  0.52, 'LAVA'
+19,    4.05,     0.01,      1.47,   0.339,   0.236,   0.069,  1.76E-4,  0.608E-6,   0.060,  0.92, 'WHITE SAND'
+Soil Parameters
+ROSETTA
+12,1 'theta_res   theta_sat   vGn_alpha       vGn_n      k_soil          BB      DRYSMC          HC      MAXSMC      REFSMC      SATPSI       SATDK       SATDW      WLTSMC         QTZ    '
+1         0.098       0.459      -1.496       1.253 1.70799e-06        1.40       0.068        1.09       0.482       0.412       0.405     1.28E-6    0.112E-4       0.286        0.25    'CLAY' 
+2         0.079       0.442      -1.581       1.416 9.47297e-07        8.52       0.095        1.23       0.476       0.382       0.630     2.45E-6    0.113E-4       0.250        0.35    'CLAY LOAM'
+3         0.061       0.399      -1.112       1.472 1.39472e-06        5.39       0.078        1.21       0.451       0.329       0.478     6.95E-6    0.143E-4       0.155        0.40    'LOAM' 
+4         0.049       0.390      -3.475       1.746 1.21755e-05        4.38       0.057        1.41       0.410       0.383       0.090     1.56E-4    0.514E-5       0.075        0.82    'LOAMY SAND'
+5         0.053       0.375      -3.524       3.177 7.43852e-05        4.05       0.045        1.47       0.395       0.236       0.121     1.76E-4    0.608E-6       0.068        0.92    'SAND'
+6         0.117       0.385      -3.342       1.208 1.31367e-06        0.40       0.100        1.18       0.426       0.338       0.153     2.17E-6    0.187E-4       0.219        0.52    'SANDY CLAY'
+7         0.063       0.384      -2.109       1.330 1.52576e-06        7.12       0.100        1.18       0.420       0.314       0.299     6.30E-6    0.990E-5       0.175        0.60    'SANDY CLAY LOAM'
+8         0.039       0.387      -2.667       1.449 4.43084e-06        4.90       0.065        1.34       0.435       0.383       0.218     3.47E-5    0.805E-5       0.114        0.60    'SANDY LOAM'
+9         0.050       0.489      -0.658       1.679 5.06391e-06        5.30       0.034        1.27       0.485       0.383       0.786     7.20E-6    0.239E-4       0.179        0.10    'SILT'
+10        0.111       0.481      -1.622       1.321 1.11298e-06        0.40       0.070        1.15       0.492       0.404       0.490     1.03E-6    0.964E-5       0.283        0.10    'SILTY CLAY'
+11        0.090       0.482      -0.839       1.521 1.28673e-06        7.75       0.089        1.32       0.477       0.387       0.356     1.70E-6    0.237E-4       0.218        0.10    'SILTY CLAY LOAM'
+12        0.065       0.439      -0.506       1.663 2.11099e-06        5.30       0.067        1.27       0.485       0.360       0.786     7.20E-6    0.239E-4       0.179        0.25    'SILT LOAM'
diff --git a/utils/laugh_tests/wigmosta1999/settings/VEGPARM.TBL b/utils/laugh_tests/wigmosta1999/settings/VEGPARM.TBL
new file mode 100644
index 0000000000000000000000000000000000000000..be03224ef59386e2503e147729ffeaef9aa12553
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/VEGPARM.TBL
@@ -0,0 +1,119 @@
+Vegetation Parameters
+USGS
+27,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX  EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX  Z0MIN    Z0MAX  '
+1,      .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,     'Urban and Built-Up Land'  
+2,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,     'Dryland Cropland and Pasture' 
+3,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .930,    .985,     .20,      .25,      .02,     .10,     'Irrigated Cropland and Pasture' 
+4,      .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.00,   4.50,   .920,    .985,     .18,      .23,      .05,     .15,     'Mixed Dryland/Irrigated Cropland and Pasture' 
+5,      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,     'Cropland/Grassland Mosaic'
+6,      .80,   3,     70.,    65.,   44.14,   0.04,    60.,    2.00,   4.00,   .930,    .985,     .16,      .20,      .20,     .20,     'Cropland/Woodland Mosaic' 
+7,      .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,     'Grassland' 
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,     'Shrubland' 
+9,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,     'Mixed Shrubland/Grassland' 
+10,     .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,     'Savanna' 
+11,     .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,     'Deciduous Broadleaf Forest' 
+12,     .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,     'Deciduous Needleleaf Forest' 
+13,     .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Broadleaf Forest'
+14,     .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,     'Evergreen Needleleaf Forest'  
+15,     .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,     'Mixed Forest' 
+16,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,     'Water Bodies' 
+17,     .60,   2,     40.,   100.,   60.00,   0.01,    68.,    1.50,   5.65,   .950,    .950,     .14,      .14,      .20,     .20,     'Herbaceous Wetland' 
+18,     .60,   2,    100.,    30.,   51.93,   0.02,    50.,    2.00,   5.80,   .950,    .950,     .14,      .14,      .40,     .40,     'Wooded Wetland' 
+19,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,     'Barren or Sparsely Vegetated' 
+20,     .60,   3,    150.,   100.,   42.00,  0.025,    68.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .10,     .10,     'Herbaceous Tundra' 
+21,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,     'Wooded Tundra' 
+22,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,     'Mixed Tundra' 
+23,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,     'Bare Ground Tundra' 
+24,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,     'Snow or Ice' 
+25,     .50,   1,     40.,   100.,   36.25,   0.02,    75.,    0.01,   0.01,   .890,    .890,     .30,      .30,      .01,     .01,     'Playa' 
+26,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .880,    .880,     .16,      .16,      .15,     .15,     'Lava'   
+27,     .00,   0,    999.,   999.,   999.0,   0.02,    75.,    0.01,   0.01,   .830,    .830,     .60,      .60,      .01,     .01,     'White Sand' 
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
+Vegetation Parameters
+MODIFIED_IGBP_MODIS_NOAH
+20,1, 'SHDFAC NROOT   RS      RGL      HS      SNUP  MAXALB   LAIMIN  LAIMAX   EMISSMIN EMISSMAX ALBEDOMIN ALBEDOMAX   Z0MIN    Z0MAX'
+1       .70,   4,    125.,    30.,   47.35,   0.08,    52.,    5.00,   6.40,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Needleleaf Forest'
+2,      .95,   4,    150.,    30.,   41.69,   0.08,    35.,    3.08,   6.48,   .950,    .950,     .12,      .12,      .50,     .50,         'Evergreen Broadleaf Forest'
+3,      .70,   4,    150.,    30.,   47.35,   0.08,    54.,    1.00,   5.16,   .930,    .940,     .14,      .15,      .50,     .50,         'Deciduous Needleleaf Forest'
+4,      .80,   4,    100.,    30.,   54.53,   0.08,    58.,    1.85,   3.31,   .930,    .930,     .16,      .17,      .50,     .50,         'Deciduous Broadleaf Forest'
+5,      .80,   4,    125.,    30.,   51.93,   0.08,    53.,    2.80,   5.50,   .930,    .970,     .17,      .25,      .20,     .50,         'Mixed Forests'
+6,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Closed Shrublands'
+7,      .70,   3,    170.,   100.,   39.18,  0.035,    65.,    0.60,   2.60,   .930,    .950,     .22,      .30,      .01,     .06,         'Open Shrublands'
+8,      .70,   3,    300.,   100.,   42.00,   0.03,    60.,    0.50,   3.66,   .930,    .930,     .25,      .30,      .01,     .05,         'Woody Savannas'
+9,      .50,   3,     70.,    65.,   54.53,   0.04,    50.,    0.50,   3.66,   .920,    .920,     .20,      .20,      .15,     .15,         'Savannas'
+10,     .80,   3,     40.,   100.,   36.35,   0.04,    70.,    0.52,   2.90,   .920,    .960,     .19,      .23,      .10,     .12,         'Grasslands'
+11      .60,   2,     70.,    65.,   55.97   0.015     59.,    1.75,   5.72,   .950,    .950,     .14,      .14,      .30,     .30,         'Permanent wetlands'
+12,     .80,   3,     40.,   100.,   36.25,   0.04,    66.,    1.56,   5.68,   .920,    .985,     .17,      .23,      .05,     .15,         'Croplands'
+13,     .10,   1,    200.,   999.,   999.0,   0.04,    46.,    1.00,   1.00,   .880,    .880,     .15,      .15,      .50,     .50,         'Urban and Built-Up'
+14      .80,   3,     40.,   100.,   36.25,   0.04,    68.,    2.29,   4.29,   .920,    .980,     .18,      .23,      .05,     .14,         'cropland/natural vegetation mosaic'
+15,     .00,   1,    999.,   999.,   999.0,   0.02,    82.,    0.01,   0.01,   .950,    .950,     .55,      .70,    0.001,   0.001,         'Snow and Ice'
+16,     .01,   1,    999.,   999.,   999.0,   0.02,    75.,    0.10,   0.75,   .900,    .900,     .38,      .38,      .01,     .01,         'Barren or Sparsely Vegetated'
+17,     .00,   0,    100.,    30.,   51.75,   0.01,    70.,    0.01,   0.01,   .980,    .980,     .08,      .08,   0.0001,  0.0001,         'Water'
+18,     .60,   3,    150.,   100.,   42.00,  0.025,    55.,    0.41,   3.35,   .930,    .930,     .15,      .20,      .30,     .30,         'Wooded Tundra'
+19,     .60,   3,    150.,   100.,   42.00,  0.025,    60.,    0.41,   3.35,   .920,    .920,     .15,      .20,      .15,     .15,         'Mixed Tundra'
+20,     .30,   2,    200.,   100.,   42.00,   0.02,    75.,    0.41,   3.35,   .900,    .900,     .25,      .25,      .05,     .10,         'Barren Tundra'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+16
+NATURAL
+14
+Vegetation Parameters
+USGS-RUC
+27,1, 'ALBEDO    Z0   LEMI     PC   SHDFAC NROOT   RS      RGL      HS      SNUP    LAI   MAXALB'
+1,     .18,     .50,   .88,   .40,   .10,   1,    200.,   999.,   999.0,   0.04,   4.0,     40.,    'Urban and Built-Up Land'
+2,     .17,     .06,   .92,   .30,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Dryland Cropland and Pasture'
+3,     .18,     .075,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Irrigated Cropland and Pasture'
+4,     .18,     .065,  .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Mixed Dryland/Irrigated Cropland and Pasture'
+5,     .18,     .05,   .92,   .40,   .80,   3,     40.,   100.,   36.25,   0.04,   4.0,     64.,    'Cropland/Grassland Mosaic'
+6,     .16,     .20,   .93,   .40,   .80,   3,     70.,    65.,   44.14,   0.04,   4.0,     60.,    'Cropland/Woodland Mosaic'
+7,     .19,     .075   .92,   .40,   .80,   3,     40.,   100.,   36.35,   0.04,   4.0,     64.,    'Grassland'
+8,     .22,     .10,   .88,   .40,   .70,   3,    300.,   100.,   42.00,   0.03,   4.0,     69.,    'Shrubland'
+9,     .20,     .11,   .90,   .40,   .70,   3,    170.,   100.,   39.18,  0.035,   4.0,     67.,    'Mixed Shrubland/Grassland'
+10,    .20,     .15,   .92,   .40,   .50,   3,     70.,    65.,   54.53,   0.04,   4.0,     45.,    'Savanna'
+11,    .16,     .50,   .93,   .55,   .80,   4,    100.,    30.,   54.53,   0.08,   4.0,     58.,    'Deciduous Broadleaf Forest'
+12,    .14,     .50,   .94,   .55,   .70,   4,    150.,    30.,   47.35,   0.08,   4.0,     54.,    'Deciduous Needleleaf Forest'
+13,    .12,     .50,   .95,   .55,   .95,   4,    150.,    30.,   41.69,   0.08,   4.0,     32.,    'Evergreen Broadleaf Forest'
+14,    .12,     .50,   .95,   .55,   .70,   4,    125.,    30.,   47.35,   0.08,   4.0,     52.,    'Evergreen Needleleaf Forest'
+15,    .13,     .50,   .94,   .55,   .80,   4,    125.,    30.,   51.93,   0.08,   4.0,     53.,    'Mixed Forest'
+16,    .08,    .0001,  .98,   .00,   .00,   0,    100.,    30.,   51.75,   0.01,   4.0,     70.,    'Water Bodies'
+17,    .14,     .20,   .95,   .55,   .60,   2,     40.,   100.,   60.00,   0.01,   4.0,     35.,    'Herbaceous Wetland'
+18,    .14,     .40,   .95,   .55,   .60,   2,    100.,    30.,   51.93,   0.02,   4.0,     30.,    'Wooded Wetland'
+19,    .25,     .05,   .85,   .30,   .01,   1,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Barren or Sparsely Vegetated'
+20,    .15,     .10,   .92,   .30,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     58.,    'Herbaceous Tundra'
+21,    .15,     .15,   .93,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Wooded Tundra'
+22,    .15,     .10,   .92,   .40,   .60,   3,    150.,   100.,   42.00,  0.025,   4.0,     55.,    'Mixed Tundra'
+23,    .25,     .065   .85,   .30,   .30,   2,    200.,   100.,   42.00,   0.02,   4.0,     65.,    'Bare Ground Tundra'
+24,    .55,     .05,   .95,   .00,   .00,   1,    999.,   999.,   999.0,   0.02,   4.0,     75.,    'Snow or Ice'
+25,    .30,     .01,   .85,   .30,   .50,   1,     40.,   100.,   36.25,   0.02,   4.0,     69.,    'Playa'
+26,    .16,     .15,   .85,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'Lava'
+27,    .60,     .01,   .90,   .00,   .00,   0,    999.,   999.,   999.0,   0.02,   4.0,     69.,    'White Sand'
+TOPT_DATA
+298.0
+CMCMAX_DATA
+0.5E-3
+CFACTR_DATA
+0.5
+RSMAX_DATA
+5000.0
+BARE
+19
+NATURAL
+5
diff --git a/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinModelVarMeta.txt b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinModelVarMeta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..255507da5241e5c5df051dd37c3a6220e383712b
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinModelVarMeta.txt
@@ -0,0 +1,44 @@
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! ***** DEFINITION OF BASIN VARIABLES *************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! *************************************************************************************************************************************
+! columns are:
+! 1: variable name
+! 2: variable description
+! 3: variable units
+! 4: variable type (scalar, separate parameter for each model layer, separate parameter at the interface of layers)
+! 5: write variable to output file? (T/F)
+! *************************************************************************************************************************************
+! define format string for parameter descriptions
+! *************************************************************************************************************************************
+'(a35,(1x,a1,1x),a65,(1x,a1,1x),a15,(1x,a1,1x),a7,(1x,a1,1x),l1)'    ! format string (must be in single quotes)
+! *************************************************************************************************************************************
+! define variables
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! scalar variables (runoff and aquifer fluxes)
+! *************************************************************************************************************************************
+basin__totalArea                    | total basin area                                                  | m2              | scalarv | T
+basin__SurfaceRunoff                | surface runoff                                                    | m s-1           | scalarv | T
+basin__ColumnOutflow                | outflow from all "outlet" HRUs (those with no downstream HRU)     | m3 s-1          | scalarv | T
+basin__AquiferStorage               | aquifer storage                                                   | m               | scalarv | F
+basin__AquiferRecharge              | recharge to the aquifer                                           | m s-1           | scalarv | F
+basin__AquiferBaseflow              | baseflow from the aquifer                                         | m s-1           | scalarv | F
+basin__AquiferTranspire             | transpiration loss from the aquifer                               | m s-1           | scalarv | F
+! *************************************************************************************************************************************
+! runoff
+! *************************************************************************************************************************************
+routingRunoffFuture                 | runoff in future time steps                                       | m s-1           | routing | F
+routingFractionFuture               | fraction of runoff in future time steps                           | -               | routing | F
+averageInstantRunoff                | instantaneous runoff                                              | m s-1           | scalarv | T
+averageRoutedRunoff                 | routed runoff                                                     | m s-1           | scalarv | T
+! *************************************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinParamMeta.txt b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinParamMeta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..94257c0db81f8ba57e9c80ce68baedc4e9914ba6
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zBasinParamMeta.txt
@@ -0,0 +1,32 @@
+! **********************************************************************************************************************
+! **********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS *********************************************************************************
+! **********************************************************************************************************************
+! **********************************************************************************************************************
+! NOTES: 
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: parameter description
+! 3: parameter units
+! 4: parameter type (scalar, separate parameter for each model layer, separate parameter at the interface of layers)
+! 5: write parameter to output file? (T/F)
+! **********************************************************************************************************************
+! define format string for parameter descriptions
+! **********************************************************************************************************************
+'(a25,(1x,a1,1x),a65,(1x,a1,1x),a10,(1x,a1,1x),a7,(1x,a1,1x),L1)' ! format string (must be in single quotes)
+! **********************************************************************************************************************
+! baseflow
+! **********************************************************************************************************************
+basin__aquiferHydCond     | hydraulic conductivity of the aquifer                             | m s-1      | scalarv | T
+basin__aquiferScaleFactor | scaling factor for aquifer storage in the big bucket              | m          | scalarv | T
+basin__aquiferBaseflowExp | baseflow exponent for the big bucket                              | -          | scalarv | T
+! **********************************************************************************************************************
+! sub-grid routing
+! **********************************************************************************************************************
+routingGammaShape         | shape parameter in Gamma distribution used for sub-grid routing   | -          | scalarv | T
+routingGammaScale         | scale parameter in Gamma distribution used for sub-grid routing   | s          | scalarv | T
+! **********************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelIndexMeta.txt b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelIndexMeta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b88778a4ed3b8d9f35afcce2cc97f2225f142718
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelIndexMeta.txt
@@ -0,0 +1,35 @@
+! ************************************************************************************************************
+! ************************************************************************************************************
+! ***** DEFINITION OF MODEL INDEX VARIABLES ******************************************************************
+! ************************************************************************************************************
+! ************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! ************************************************************************************************************
+! columns are:
+! 1: variable name
+! 2: variable description
+! 3: variable units
+! 4: variable type (scalar, separate parameter for each model layer, separate parameter at the interface of layers)
+! 5: write parameter to output file? (T/F)
+! ************************************************************************************************************
+! define format string for variable descriptions
+! ************************************************************************************************************
+'(a20,(1x,a1,1x),a60,(1x,a1,1x),a10,(1x,a1,1x),a7,(1x,a1,1x),L1)'    ! format string (must be in single quotes)
+! ************************************************************************************************************
+! define variables
+! ************************************************************************************************************
+nSnow                | number of snow layers                                        | -          | scalarv | T
+nSoil                | number of soil layers                                        | -          | scalarv | T
+nLayers              | total number of layers                                       | -          | scalarv | T
+midSnowStartIndex    | start index of the midSnow vector for a given timestep       | -          | scalarv | T
+midSoilStartIndex    | start index of the midSoil vector for a given timestep       | -          | scalarv | T
+midTotoStartIndex    | start index of the midToto vector for a given timestep       | -          | scalarv | T
+ifcSnowStartIndex    | start index of the ifcSnow vector for a given timestep       | -          | scalarv | T
+ifcSoilStartIndex    | start index of the ifcSoil vector for a given timestep       | -          | scalarv | T
+ifcTotoStartIndex    | start index of the ifcToto vector for a given timestep       | -          | scalarv | T
+layerType            | index defining type of layer (soil or snow)                  | -          | midToto | F
+! ************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelVarMeta.txt b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelVarMeta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a6d8661c6dc7570d2ff1165c373772f87f6f542c
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalModelVarMeta.txt
@@ -0,0 +1,285 @@
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! ***** DEFINITION OF MODEL VARIABLES *************************************************************************************************
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "|" must be present (format a1), as these are used to check the integrety of the file
+! *************************************************************************************************************************************
+! columns are:
+! 1: variable name
+! 2: variable description
+! 3: variable units
+! 4: variable type (scalar, separate parameter for each model layer, separate parameter at the interface of layers)
+! 5: write variable to output file? (T/F)
+! *************************************************************************************************************************************
+! define format string for parameter descriptions
+! *************************************************************************************************************************************
+'(a35,(1x,a1,1x),a65,(1x,a1,1x),a15,(1x,a1,1x),a7,(1x,a1,1x),l1)'    ! format string (must be in single quotes)
+! *************************************************************************************************************************************
+! define variables
+! *************************************************************************************************************************************
+! *************************************************************************************************************************************
+! timestep-average fluxes for a few key variables
+! *************************************************************************************************************************************
+totalSoilCompress                   | change in total soil storage due to compression of soil matrix    | kg m-2          | scalarv | F
+averageThroughfallSnow              | snow that reaches the ground without ever touching the canopy     | kg m-2 s-1      | scalarv | F
+averageThroughfallRain              | rain that reaches the ground without ever touching the canopy     | kg m-2 s-1      | scalarv | F
+averageCanopySnowUnloading          | unloading of snow from the vegetion canopy                        | kg m-2 s-1      | scalarv | F
+averageCanopyLiqDrainage            | drainage of liquid water from the vegetation canopy               | kg m-2 s-1      | scalarv | F
+averageCanopyMeltFreeze             | melt/freeze of water stored in the canopy                         | kg m-2 s-1      | scalarv | F
+averageCanopyTranspiration          | canopy transpiration                                              | kg m-2 s-1      | scalarv | F
+averageCanopyEvaporation            | canopy evaporation/condensation                                   | kg m-2 s-1      | scalarv | F
+averageCanopySublimation            | canopy sublimation/frost                                          | kg m-2 s-1      | scalarv | F
+averageSnowSublimation              | snow sublimation/frost (below canopy or non-vegetated)            | kg m-2 s-1      | scalarv | F
+averageGroundEvaporation            | ground evaporation/condensation (below canopy or non-vegetated)   | kg m-2 s-1      | scalarv | T
+averageRainPlusMelt                 | rain plus melt input to soil before calculating surface runoff    | m s-1           | scalarv | F
+averageSurfaceRunoff                | surface runoff                                                    | m s-1           | scalarv | F
+averageSoilInflux                   | influx of water at the top of the soil profile                    | m s-1           | scalarv | F
+averageSoilBaseflow                 | total baseflow from throughout the soil profile                   | m s-1           | scalarv | T
+averageSoilDrainage                 | drainage from the bottom of the soil profile                      | m s-1           | scalarv | F
+averageAquiferRecharge              | recharge to the aquifer                                           | m s-1           | scalarv | F
+averageAquiferBaseflow              | baseflow from the aquifer                                         | m s-1           | scalarv | F
+averageAquiferTranspire             | transpiration from the aquifer                                    | m s-1           | scalarv | F
+averageColumnOutflow                | outflow from each layer in the soil profile                       | m3 s-1          | midSoil | T
+! *************************************************************************************************************************************
+! scalar variables (forcing)
+! *************************************************************************************************************************************
+scalarCosZenith                     | cosine of the solar zenith angle                                  | -               | scalarv | F
+scalarFractionDirect                | fraction of direct radiation (0-1)                                | -               | scalarv | F
+spectralIncomingDirect              | incoming direct solar radiation in each wave band                 | W m-2           | wLength | F
+spectralIncomingDiffuse             | incoming diffuse solar radiation in each wave band                | W m-2           | wLength | F
+scalarVPair                         | vapor pressure of the air above the vegetation canopy             | Pa              | scalarv | F
+scalarTwetbulb                      | wet bulb temperature                                              | K               | scalarv | F
+scalarRainfall                      | computed rainfall rate                                            | kg m-2 s-1      | scalarv | F
+scalarSnowfall                      | computed snowfall rate                                            | kg m-2 s-1      | scalarv | F
+scalarSnowfallTemp                  | temperature of fresh snow                                         | K               | scalarv | F
+scalarNewSnowDensity                | density of fresh snow (should snow be falling in this time step)  | kg m-3          | scalarv | F
+scalarO2air                         | atmospheric o2 concentration                                      | Pa              | scalarv | F
+scalarCO2air                        | atmospheric co2 concentration                                     | Pa              | scalarv | F
+! *************************************************************************************************************************************
+! scalar variables (state variables)
+! *************************************************************************************************************************************
+scalarCanopyIce                     | mass of ice on the vegetation canopy                              | kg m-2          | scalarv | F
+scalarCanopyLiq                     | mass of liquid water on the vegetation canopy                     | kg m-2          | scalarv | F
+scalarCanairTemp                    | temperature of the canopy air space                               | K               | scalarv | F
+scalarCanopyTemp                    | temperature of the vegetation canopy                              | K               | scalarv | F 
+scalarSnowAge                       | non-dimensional snow age                                          | -               | scalarv | F
+scalarSnowAlbedo                    | snow albedo for the entire spectral band                          | -               | scalarv | F
+spectralSnowAlbedoDirect            | direct snow albedo for individual spectral bands                  | -               | wLength | F
+spectralSnowAlbedoDiffuse           | diffuse snow albedo for individual spectral bands                 | -               | wLength | F
+scalarSnowDepth                     | total snow depth                                                  | m               | scalarv | F
+scalarSWE                           | snow water equivalent                                             | kg m-2          | scalarv | F
+scalarSfcMeltPond                   | ponded water caused by melt of the "snow without a layer"         | kg m-2          | scalarv | F
+scalarAquiferStorage                | water required to bring aquifer to the bottom of the soil profile | m               | scalarv | F
+scalarSurfaceTemp                   | surface temperature (just a copy of the upper-layer temperature)  | K               | scalarv | F
+! *************************************************************************************************************************************
+! NOAH-MP vegetation variables (general)
+! *************************************************************************************************************************************
+scalarGreenVegFraction              | green vegetation fraction (used to compute LAI)                   | -               | scalarv | F
+scalarBulkVolHeatCapVeg             | bulk volumetric heat capacity of vegetation                       | J m-3 K-1       | scalarv | F
+scalarRootZoneTemp                  | average temperature of the root zone                              | K               | scalarv | F
+scalarLAI                           | one-sided leaf area index                                         | m2 m-2          | scalarv | F
+scalarSAI                           | one-sided stem area index                                         | m2 m-2          | scalarv | F
+scalarExposedLAI                    | exposed leaf area index (after burial by snow)                    | m2 m-2          | scalarv | F
+scalarExposedSAI                    | exposed stem area index (after burial by snow)                    | m2 m-2          | scalarv | F
+scalarCanopyIceMax                  | maximum interception storage capacity for ice                     | kg m-2          | scalarv | F
+scalarCanopyLiqMax                  | maximum interception storage capacity for liquid water            | kg m-2          | scalarv | F
+scalarGrowingSeasonIndex            | growing season index (0=off, 1=on)                                | -               | scalarv | F
+scalarVP_CanopyAir                  | vapor pressure of the canopy air space                            | Pa              | scalarv | F
+! *************************************************************************************************************************************
+! NOAH-MP vegetation variables (shortwave radiation)
+! *************************************************************************************************************************************
+scalarCanopySunlitFraction          | sunlit fraction of canopy                                         | -               | scalarv | F
+scalarCanopySunlitLAI               | sunlit leaf area                                                  | -               | scalarv | F
+scalarCanopyShadedLAI               | shaded leaf area                                                  | -               | scalarv | F
+scalarCanopySunlitPAR               | average absorbed par for sunlit leaves                            | W m-2           | scalarv | F
+scalarCanopyShadedPAR               | average absorbed par for shaded leaves                            | W m-2           | scalarv | F
+spectralBelowCanopyDirect           | downward direct flux below veg layer for each spectral band       | W m-2           | wLength | F
+spectralBelowCanopyDiffuse          | downward diffuse flux below veg layer for each spectral band      | W m-2           | wLength | F
+scalarBelowCanopySolar              | solar radiation transmitted below the canopy                      | W m-2           | scalarv | F
+spectralAlbGndDirect                | direct  albedo of underlying surface for each spectral band       | -               | wLength | F
+spectralAlbGndDiffuse               | diffuse albedo of underlying surface for each spectral band       | -               | wLength | F
+scalarGroundAlbedo                  | albedo of the ground surface                                      | -               | scalarv | F
+scalarCanopyAbsorbedSolar           | solar radiation absorbed by canopy                                | W m-2           | scalarv | F
+scalarGroundAbsorbedSolar           | solar radiation absorbed by ground                                | W m-2           | scalarv | F
+! *************************************************************************************************************************************
+! NOAH-MP vegetation variables (longwave radiation)
+! *************************************************************************************************************************************
+scalarCanopyEmissivity              | effective canopy emissivity                                       | -               | scalarv | F
+scalarLWRadCanopy                   | longwave radiation emitted from the canopy                        | W m-2           | scalarv | F
+scalarLWRadGround                   | longwave radiation emitted at the ground surface                  | W m-2           | scalarv | F
+scalarLWRadUbound2Canopy            | downward atmospheric longwave radiation absorbed by the canopy    | W m-2           | scalarv | F
+scalarLWRadUbound2Ground            | downward atmospheric longwave radiation absorbed by the ground    | W m-2           | scalarv | F
+scalarLWRadUbound2Ubound            | atmospheric radiation refl by ground + lost thru upper boundary   | W m-2           | scalarv | F
+scalarLWRadCanopy2Ubound            | longwave radiation emitted from canopy lost thru upper boundary   | W m-2           | scalarv | F
+scalarLWRadCanopy2Ground            | longwave radiation emitted from canopy absorbed by the ground     | W m-2           | scalarv | F
+scalarLWRadCanopy2Canopy            | canopy longwave reflected from ground and absorbed by the canopy  | W m-2           | scalarv | F
+scalarLWRadGround2Ubound            | longwave radiation emitted from ground lost thru upper boundary   | W m-2           | scalarv | F
+scalarLWRadGround2Canopy            | longwave radiation emitted from ground and absorbed by the canopy | W m-2           | scalarv | F
+scalarLWNetCanopy                   | net longwave radiation at the canopy                              | W m-2           | scalarv | F
+scalarLWNetGround                   | net longwave radiation at the ground surface                      | W m-2           | scalarv | F
+scalarLWNetUbound                   | net longwave radiation at the upper atmospheric boundary          | W m-2           | scalarv | F
+! *************************************************************************************************************************************
+! NOAH-MP vegetation variables (turbulent heat transfer)
+! *************************************************************************************************************************************
+scalarLatHeatSubVapCanopy           | latent heat of sublimation/vaporization used for veg canopy       | J kg-1          | scalarv | F
+scalarLatHeatSubVapGround           | latent heat of sublimation/vaporization used for ground surface   | J kg-1          | scalarv | F
+scalarSatVP_CanopyTemp              | saturation vapor pressure at the temperature of vegetation canopy | Pa              | scalarv | F
+scalarSatVP_GroundTemp              | saturation vapor pressure at the temperature of the ground        | Pa              | scalarv | F
+scalarZ0Canopy                      | roughness length of the canopy                                    | m               | scalarv | F
+scalarWindReductionFactor           | canopy wind reduction factor                                      | -               | scalarv | F
+scalarZeroPlaneDisplacement         | zero plane displacement                                           | m               | scalarv | F
+scalarRiBulkCanopy                  | bulk Richardson number for the canopy                             | -               | scalarv | F     
+scalarRiBulkGround                  | bulk Richardson number for the ground surface                     | -               | scalarv | F
+scalarCanopyStabilityCorrection     | stability correction for the canopy                               | -               | scalarv | F
+scalarGroundStabilityCorrection     | stability correction for the ground surface                       | -               | scalarv | F
+scalarEddyDiffusCanopyTop           | eddy diffusivity for heat at the top of the canopy                | m2 s-1          | scalarv | F 
+scalarFrictionVelocity              | friction velocity (canopy momentum sink)                          | m s-1           | scalarv | F
+scalarWindspdCanopyTop              | windspeed at the top of the canopy                                | m s-1           | scalarv | F
+scalarWindspdCanopyBottom           | windspeed at the height of the bottom of the canopy               | m s-1           | scalarv | F
+scalarGroundResistance              | below canopy aerodynamic resistance                               | s m-1           | scalarv | F
+scalarCanopyResistance              | above canopy aerodynamic resistance                               | s m-1           | scalarv | F
+scalarLeafResistance                | mean leaf boundary layer resistance per unit leaf area            | s m-1           | scalarv | F
+scalarSoilResistance                | soil surface resistance                                           | s m-1           | scalarv | F
+scalarSoilRelHumidity               | relative humidity in the soil pores in the upper-most soil layer  | -               | scalarv | F
+scalarSenHeatTotal                  | sensible heat from the canopy air space to the atmosphere         | W m-2           | scalarv | F
+scalarSenHeatCanopy                 | sensible heat from the canopy to the canopy air space             | W m-2           | scalarv | F
+scalarSenHeatGround                 | sensible heat from the ground (below canopy or non-vegetated)     | W m-2           | scalarv | F
+scalarLatHeatTotal                  | latent heat from the canopy air space to the atmosphere           | W m-2           | scalarv | F
+scalarLatHeatCanopyEvap             | evaporation latent heat from the canopy to the canopy air space   | W m-2           | scalarv | F
+scalarLatHeatCanopyTrans            | transpiration latent heat from the canopy to the canopy air space | W m-2           | scalarv | F
+scalarLatHeatGround                 | latent heat from the ground (below canopy or non-vegetated)       | W m-2           | scalarv | F
+scalarCanopyAdvectiveHeatFlux       | heat advected to the canopy with precipitation (snow + rain)      | W m-2           | scalarv | F
+scalarGroundAdvectiveHeatFlux       | heat advected to the ground with throughfall + unloading/drainage | W m-2           | scalarv | F
+scalarCanopyTranspiration           | canopy transpiration                                              | kg m-2 s-1      | scalarv | F
+scalarCanopyEvaporation             | canopy evaporation/condensation                                   | kg m-2 s-1      | scalarv | F
+scalarCanopySublimation             | canopy sublimation/frost                                          | kg m-2 s-1      | scalarv | F
+scalarGroundEvaporation             | ground evaporation/condensation (below canopy or non-vegetated)   | kg m-2 s-1      | scalarv | F
+scalarSnowSublimation               | snow sublimation/frost (below canopy or non-vegetated)            | kg m-2 s-1      | scalarv | F
+! *************************************************************************************************************************************
+! NOAH-MP vegetation variables (transpiration)
+! *************************************************************************************************************************************
+scalarTranspireLim                  | aggregate soil moisture and aquifer control on transpiration      | -               | scalarv | F
+scalarTranspireLimAqfr              | aquifer storage control on transpiration                          | -               | scalarv | F
+scalarFoliageNitrogenFactor         | foliage nitrogen concentration (1=saturated)                      | -               | scalarv | F
+scalarStomResistSunlit              | stomatal resistance for sunlit leaves                             | s m-1           | scalarv | F
+scalarStomResistShaded              | stomatal resistance for shaded leaves                             | s m-1           | scalarv | F
+scalarPhotosynthesisSunlit          | sunlit photosynthesis                                             | umolco2 m-2 s-1 | scalarv | F
+scalarPhotosynthesisShaded          | shaded photosynthesis                                             | umolco2 m-2 s-1 | scalarv | F
+! *************************************************************************************************************************************
+! vegetation variables (canopy water)
+! *************************************************************************************************************************************
+scalarCanopyWetFraction             | fraction canopy that is wet                                       | -               | scalarv | F
+scalarGroundSnowFraction            | fraction ground that is covered with snow                         | -               | scalarv | F
+scalarThroughfallSnow               | snow that reaches the ground without ever touching the canopy     | kg m-2 s-1      | scalarv | F
+scalarThroughfallRain               | rain that reaches the ground without ever touching the canopy     | kg m-2 s-1      | scalarv | F
+scalarCanopySnowUnloading           | unloading of snow from the vegetation canopy                      | kg m-2 s-1      | scalarv | F
+scalarCanopyLiqDrainage             | drainage of liquid water from the vegetation canopy               | kg m-2 s-1      | scalarv | F
+scalarCanopyMeltFreeze              | melt/freeze of water stored in the canopy                         | kg m-2 s-1      | scalarv | F
+! *************************************************************************************************************************************
+! scalar variables (soil and aquifer fluxes)
+! *************************************************************************************************************************************
+scalarRainPlusMelt                  | rain plus melt, used as input to soil before surface runoff       | m s-1           | scalarv | T
+scalarInfilArea                     | fraction of unfrozen area where water can infiltrate              | -               | scalarv | T
+scalarFrozenArea                    | fraction of area that is considered impermeable due to soil ice   | -               | scalarv | F
+scalarInfiltration                  | infiltration of water into the soil profile                       | m s-1           | scalarv | T 
+scalarExfiltration                  | exfiltration of water from the top of the soil profile            | m s-1           | scalarv | T 
+scalarSurfaceRunoff                 | surface runoff                                                    | m s-1           | scalarv | T
+scalarInitAquiferRecharge           | recharge to the aquifer at the start-of-step                      | m s-1           | scalarv | F
+scalarAquiferRecharge               | recharge to the aquifer at the end-of-step                        | m s-1           | scalarv | F
+scalarInitAquiferTranspire          | transpiration loss from the aquifer at the start-of-step          | m s-1           | scalarv | F
+scalarAquiferTranspire              | transpiration loss from the aquifer at the end-of-step            | m s-1           | scalarv | F
+scalarInitAquiferBaseflow           | baseflow from the aquifer at the start-of-step                    | m s-1           | scalarv | F 
+scalarAquiferBaseflow               | baseflow from the aquifer at the end-of-step                      | m s-1           | scalarv | F 
+! *************************************************************************************************************************************
+! scalar variables (sub-step average fluxes for the soil zone)
+! *************************************************************************************************************************************
+scalarSoilInflux                    | sub-step average: influx of water at the top of the soil profile  | m s-1           | scalarv | F
+scalarSoilCompress                  | change in total soil storage due to compression of soil matrix    | kg m-2          | scalarv | F
+scalarSoilBaseflow                  | sub-step average: total baseflow from the soil profile            | m s-1           | scalarv | T
+scalarSoilDrainage                  | sub-step average: drainage from the bottom of the soil profile    | m s-1           | scalarv | F
+scalarSoilTranspiration             | sub-step average: total transpiration from the soil               | m s-1           | scalarv | F
+! *************************************************************************************************************************************
+! scalar variables (mass balance check)
+! *************************************************************************************************************************************
+scalarSoilWatBalError               | error in the total soil water balance                             | kg m-2          | scalarv | F
+scalarAquiferBalError               | error in the aquifer water balance                                | kg m-2          | scalarv | F
+scalarTotalSoilLiq                  | total mass of liquid water in the soil                            | kg m-2          | scalarv | F 
+scalarTotalSoilIce                  | total mass of ice in the soil                                     | kg m-2          | scalarv | F
+! *************************************************************************************************************************************
+! variables at the mid-point of each layer -- domain geometry
+! *************************************************************************************************************************************
+mLayerDepth                         | depth of each layer                                               | m               | midToto | T
+mLayerHeight                        | height of the layer mid-point (top of soil = 0)                   | m               | midToto | T
+mLayerRootDensity                   | fraction of roots in each soil layer                              | -               | midSoil | F
+! *************************************************************************************************************************************
+! variables at the mid-point of each layer coupled energy and mass
+! *************************************************************************************************************************************
+mLayerTemp                          | temperature of each layer                                         | K               | midToto | F
+mLayerVolFracAir                    | volumetric fraction of air in each layer                          | -               | midToto | F
+mLayerVolFracIce                    | volumetric fraction of ice in each layer                          | -               | midToto | F
+mLayerVolFracLiq                    | volumetric fraction of liquid water in each layer                 | -               | midToto | T
+mLayerVolHtCapBulk                  | volumetric heat capacity in each layer                            | J m-3 K-1       | midToto | F
+mLayerTcrit                         | critical soil temperature above which all water is unfrozen       | K               | midSoil | F
+mLayerdTheta_dTk                    | derivative in volumetric liquid water content wrt temperature     | K-1             | midToto | F
+mLayerThermalC                      | thermal conductivity at the mid-point of each layer               | W m-1 K-1       | midToto | F
+mLayerRadCondFlux                   | temporal derivative in energy of radiative and conductive flux    | J m-3 s-1       | midToto | F
+mLayerMeltFreeze                    | ice content change from melt/freeze in each layer                 | kg m-3          | midToto | F
+mLayerInfilFreeze                   | ice content change by freezing infiltrating flux                  | kg m-3          | midToto | F
+mLayerSatHydCond                    | saturated hydraulic conductivity in each layer                    | m s-1           | midSoil | F
+mLayerSatHydCondMP                  | saturated hydraulic conductivity of macropores in each layer      | m s-1           | midSoil | F
+mLayerMatricHead                    | matric head of water in the soil                                  | m               | midSoil | F
+mLayerdTheta_dPsi                   | derivative in the soil water characteristic w.r.t. psi            | m-1             | midSoil | F
+mLayerdPsi_dTheta                   | derivative in the soil water characteristic w.r.t. theta          | m               | midSoil | F
+mLayerThetaResid                    | residual volumetric water content in each snow layer              | -               | midSnow | F
+mLayerPoreSpace                     | total pore space in each snow layer                               | -               | midSnow | F
+mLayerCompress                      | change in volumetric water content due to compression of soil     | -               | midSoil | F
+mLayerTranspireLim                  | soil moist & veg limit on transpiration for each layer            | -               | midSoil | F
+mLayerInitTranspire                 | transpiration loss from each soil layer at the start-of-step      | m s-1           | midSoil | F
+mLayerTranspire                     | transpiration loss from each soil layer                           | m s-1           | midSoil | F
+mLayerInitQMacropore                | liquid flux from micropores to macropores at the start-of-step    | m s-1           | midSoil | F
+mLayerQMacropore                    | liquid flux from micropores to macropores                         | m s-1           | midSoil | F
+mLayerInitBaseflow                  | baseflow from each soil layer at the start of the time step       | m s-1           | midSoil | F
+mLayerBaseflow                      | baseflow from each soil layer                                     | m s-1           | midSoil | F
+mLayerColumnInflow                  | total inflow to each layer in a given soil column                 | m3 s-1          | midSoil | F
+mLayerColumnOutflow                 | total outflow from each layer in a given soil column              | m3 s-1          | midSoil | F
+! *************************************************************************************************************************************
+! variables at the interface of each layer
+! *************************************************************************************************************************************
+iLayerHeight                        | height of the layer interface (top of soil = 0)                   | m               | ifcToto | T
+iLayerThermalC                      | thermal conductivity at the interface of each layer               | W m-1 K-1       | ifcToto | F
+iLayerConductiveFlux                | conductive energy flux at layer interfaces at end of time step    | W m-2           | ifcToto | F
+iLayerAdvectiveFlux                 | advective energy flux at layer interfaces at end of time step     | W m-2           | ifcToto | F
+iLayerInitNrgFlux                   | energy flux at layer interfaces at the start of the time step     | W m-2           | ifcToto | F
+iLayerNrgFlux                       | energy flux at layer interfaces at end of the time step           | W m-2           | ifcToto | F
+iLayerSatHydCond                    | saturated hydraulic conductivity in each layer interface          | m s-1           | ifcSoil | F
+iLayerInitLiqFluxSnow               | liquid flux at snow layer interfaces at start of the time step    | m s-1           | ifcSnow | F
+iLayerInitLiqFluxSoil               | liquid flux at soil layer interfaces at start of the time step    | m s-1           | ifcSoil | F
+iLayerInitFluxReversal              | start of step liquid flux at soil layer interfaces from impedance | m s-1           | ifcSoil | F
+iLayerLiqFluxSnow                   | liquid flux at snow layer interfaces at end of the time step      | m s-1           | ifcSnow | F
+iLayerLiqFluxSoil                   | liquid flux at soil layer interfaces at end of the time step      | m s-1           | ifcSoil | F
+iLayerFluxReversal                  | end of step liquid flux at soil layer interfaces from impedance   | m s-1           | ifcSoil | F
+! *************************************************************************************************************************************
+! time stepping
+! *************************************************************************************************************************************
+dt_init                             | length of initial time step at start of next data interval        | s               | scalarv | F
+! *************************************************************************************************************************************
+! "short-cut" variables
+! *************************************************************************************************************************************
+scalarVGn_m                         | van Genuchten "m" parameter                                       | -               | scalarv | F
+scalarKappa                         | constant in the freezing curve function                           | m K-1           | scalarv | F
+scalarVolHtCap_air                  | volumetric heat capacity air                                      | J m-3 K-1       | scalarv | F
+scalarVolHtCap_ice                  | volumetric heat capacity ice                                      | J m-3 K-1       | scalarv | F
+scalarVolHtCap_soil                 | volumetric heat capacity dry soil                                 | J m-3 K-1       | scalarv | F
+scalarVolHtCap_water                | volumetric heat capacity liquid wat                               | J m-3 K-1       | scalarv | F
+scalarLambda_drysoil                | thermal conductivity of dry soil                                  | W m-1           | scalarv | F
+scalarLambda_wetsoil                | thermal conductivity of wet soil                                  | W m-1           | scalarv | F
+scalarVolLatHt_fus                  | volumetric latent heat of fusion                                  | J m-3           | scalarv | F
+scalarAquiferRootFrac               | fraction of roots below the soil profile (in the aquifer)         | -               | scalarv | F
+! *************************************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalParamMeta.txt b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalParamMeta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..63709321bed33305dbc2efde6855bf744007edaf
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/meta/summa_zLocalParamMeta.txt
@@ -0,0 +1,179 @@
+! **********************************************************************************************************************
+! **********************************************************************************************************************
+! ***** DEFINITION OF MODEL PARAMETERS *********************************************************************************
+! **********************************************************************************************************************
+! **********************************************************************************************************************
+! NOTES: 
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: parameter description
+! 3: parameter units
+! 4: parameter type (scalar, separate parameter for each model layer, separate parameter at the interface of layers)
+! 5: write parameter to output file? (T/F)
+! **********************************************************************************************************************
+! define format string for parameter descriptions
+! **********************************************************************************************************************
+'(a25,(1x,a1,1x),a65,(1x,a1,1x),a10,(1x,a1,1x),a7,(1x,a1,1x),L1)' ! format string (must be in single quotes)
+! **********************************************************************************************************************
+! boundary conditions
+! **********************************************************************************************************************
+upperBoundHead            | matric head at the upper boundary                                 | m          | scalarv | T
+lowerBoundHead            | matric head at the lower boundary                                 | m          | scalarv | T
+upperBoundTheta           | volumetric liquid water content at the upper boundary             | -          | scalarv | T
+lowerBoundTheta           | volumetric liquid water content at the lower boundary             | -          | scalarv | T
+upperBoundTemp            | temperature of the upper boundary                                 | K          | scalarv | T
+lowerBoundTemp            | temperature of the lower boundary                                 | K          | scalarv | T
+! **********************************************************************************************************************
+! precipitation partitioning
+! **********************************************************************************************************************
+tempCritRain              | critical temperature where precipitation is rain                  | K          | scalarv | T
+tempRangeTimestep         | temperature range over the time step                              | K          | scalarv | T
+frozenPrecipMultip        | frozen precipitation multiplier                                   | -          | scalarv | T
+! **********************************************************************************************************************
+! freezing curve for snow 
+! **********************************************************************************************************************
+snowfrz_scale             | scaling parameter for the freezing curve for snow                 | K-1        | scalarv | T
+! **********************************************************************************************************************
+! snow albedo 
+! **********************************************************************************************************************
+albedoMax                 | maximum snow albedo (single spectral band)                        | -          | scalarv | T
+albedoMinWinter           | minimum snow albedo during winter (single spectral band)          | -          | scalarv | T
+albedoMinSpring           | minimum snow albedo during spring (single spectral band)          | -          | scalarv | T
+albedoMaxVisible          | maximum snow albedo in the visible part of the spectrum           | -          | scalarv | T
+albedoMinVisible          | minimum snow albedo in the visible part of the spectrum           | -          | scalarv | T
+albedoMaxNearIR           | maximum snow albedo in the near infra-red part of the spectrum    | -          | scalarv | T
+albedoMinNearIR           | minimum snow albedo in the near infra-red part of the spectrum    | -          | scalarv | T
+albedoDecayRate           | albedo decay rate                                                 | s          | scalarv | T
+albedoSootLoad            | soot load factor                                                  | -          | scalarv | T
+albedoRefresh             | critical mass necessary for albedo refreshment                    | kg m-2     | scalarv | T
+! **********************************************************************************************************************
+! radiation transfer
+! **********************************************************************************************************************
+radExt_snow               | extinction coefficient for radiation penetration into snowpack    | m-1        | scalarv | T
+directScale               | scaling factor for fractional driect radiaion parameterization    | -          | scalarv | T
+Frad_direct               | fraction direct solar radiation                                   | -          | scalarv | T
+Frad_vis                  | fraction radiation in visible part of spectrum                    | -          | scalarv | T
+! **********************************************************************************************************************
+! new snow density
+! **********************************************************************************************************************
+newSnowDenMin             | minimum new snow density                                          | kg m-3     | scalarv | T
+newSnowDenMult            | multiplier for new snow density                                   | kg m-3     | scalarv | T
+newSnowDenScal            | scaling factor for new snow density                               | K          | scalarv | T
+! **********************************************************************************************************************
+! snow compaction
+! **********************************************************************************************************************
+densScalGrowth            | density scaling factor for grain growth                           | kg-1 m3    | scalarv | T
+tempScalGrowth            | temperature scaling factor for grain growth                       | K-1        | scalarv | T
+grainGrowthRate           | rate of grain growth                                              | s-1        | scalarv | T
+densScalOvrbdn            | density scaling factor for overburden pressure                    | kg-1 m3    | scalarv | T
+tempScalOvrbdn            | temperature scaling factor for overburden pressure                | K-1        | scalarv | T
+base_visc                 | viscosity coefficient at T=T_frz and snow density=0               | kg s m-2   | scalarv | T
+! **********************************************************************************************************************
+! water flow through snow
+! **********************************************************************************************************************
+Fcapil                    | capillary retention (fraction of total pore volume)               | -          | scalarv | T
+k_snow                    | hydraulic conductivity of snow                                    | m s-1      | scalarv | T
+mw_exp                    | exponent for meltwater flow                                       | -          | scalarv | T
+! **********************************************************************************************************************
+! turbulent heat fluxes
+! **********************************************************************************************************************
+z0Snow                    | roughness length of snow                                          | m          | scalarv | T
+z0Soil                    | roughness length of bare soil below the canopy                    | m          | scalarv | T
+z0Canopy                  | roughness length of the canopy                                    | m          | scalarv | T
+zpdFraction               | zero plane displacement / canopy height                           | -          | scalarv | T
+critRichNumber            | critical value for the bulk Richardson number                     | -          | scalarv | T
+Louis79_bparam            | parameter in Louis (1979) stability function                      | -          | scalarv | T
+Louis79_cStar             | parameter in Louis (1979) stability function                      | -          | scalarv | T
+Mahrt87_eScale            | exponential scaling factor in the Mahrt (1987) stability function | -          | scalarv | T
+leafExchangeCoeff         | turbulent exchange coeff between canopy surface and canopy air    | m s-(1/2)  | scalarv | T
+windReductionParam        | canopy wind reduction parameter                                   | -          | scalarv | T
+! **********************************************************************************************************************
+! vegetation properties
+! **********************************************************************************************************************
+winterSAI                 | stem area index prior to the start of the growing season          | m2 m-2     | scalarv | T
+summerLAI                 | maximum leaf area index at the peak of the growing season         | m2 m-2     | scalarv | T
+rootingDepth              | rooting depth                                                     | m          | scalarv | T
+rootDistExp               | exponent for the vertical distribution of root density            | -          | scalarv | T
+plantWiltPsi              | matric head at wilting point                                      | m          | scalarv | T
+soilStressParam           | parameter in the exponential soil stress function                 | -          | scalarv | T
+critSoilWilting           | critical vol. liq. water content when plants are wilting          | -          | scalarv | T
+critSoilTranspire         | critical vol. liq. water content when transpiration is limited    | -          | scalarv | T
+critAquiferTranspire      | critical aquifer storage value when transpiration is limited      | m          | scalarv | T
+minStomatalResistance     | minimum stomatal resistance                                       | s m-1      | scalarv | T
+leafDimension             | characteristic leaf dimension                                     | m          | scalarv | T
+heightCanopyTop           | height of top of the vegetation canopy above ground surface       | m          | scalarv | T
+heightCanopyBottom        | height of bottom of the vegetation canopy above ground surface    | m          | scalarv | T
+specificHeatVeg           | specific heat of vegetation                                       | J kg-1 K-1 | scalarv | T
+maxMassVegetation         | maximum mass of vegetation (full foliage)                         | kg m-2     | scalarv | T
+throughfallScaleSnow      | scaling factor for throughfall (snow)                             | -          | scalarv | T
+throughfallScaleRain      | scaling factor for throughfall (rain)                             | -          | scalarv | T
+refInterceptCapSnow       | reference canopy interception capacity per unit leaf area (snow)  | kg m-2     | scalarv | T
+refInterceptCapRain       | canopy interception capacity per unit leaf area (rain)            | kg m-2     | scalarv | T
+snowUnloadingCoeff        | time constant for unloading of snow from the forest canopy        | s-1        | scalarv | T
+canopyDrainageCoeff       | time constant for drainage of liquid water from the forest canopy | s-1        | scalarv | T
+ratioDrip2Unloading       | ratio of canopy drip to unloading of snow from the forest canopy  | -          | scalarv | T
+! **********************************************************************************************************************
+! soil properties
+! **********************************************************************************************************************
+soil_dens_intr            | intrinsic soil density                                            | kg m-3     | scalarv | T
+thCond_soil               | thermal conductivity of soil (includes quartz and other minerals) | W m-1 K-1  | scalarv | T
+frac_sand                 | fraction of sand                                                  | -          | scalarv | T
+frac_silt                 | fraction of silt                                                  | -          | scalarv | T
+frac_clay                 | fraction of clay                                                  | -          | scalarv | T
+fieldCapacity             | soil field capacity (vol liq water content when baseflow begins)  | -          | scalarv | T
+wettingFrontSuction       | Green-Ampt wetting front suction                                  | m          | scalarv | T
+theta_mp                  | volumetric liquid water content when macropore flow begins        | -          | scalarv | T
+theta_sat                 | soil porosity                                                     | -          | scalarv | T
+theta_res                 | volumetric residual water content                                 | -          | scalarv | T
+vGn_alpha                 | van Genuchten "alpha" parameter                                   | m-1        | scalarv | T
+vGn_n                     | van Genuchten "n" parameter                                       | -          | scalarv | T
+mpExp                     | empirical exponent in macropore flow equation                     | -          | scalarv | T
+k_soil                    | saturated hydraulic conductivity                                  | m s-1      | scalarv | T
+k_macropore               | saturated hydraulic conductivity for macropores                   | m s-1      | scalarv | T
+kAnisotropic              | anisotropy factor for lateral hydraulic conductivity              | -          | scalarv | T
+zScale_TOPMODEL           | TOPMODEL scaling factor used in lower boundary condition for soil | m          | scalarv | T
+compactedDepth            | depth where k_soil reaches the compacted value given by CH78      | m          | scalarv | T
+aquiferScaleFactor        | scaling factor for aquifer storage in the big bucket              | m          | scalarv | T
+aquiferBaseflowExp        | baseflow exponent                                                 | -          | scalarv | T
+qSurfScale                | scaling factor in the surface runoff parameterization             | -          | scalarv | T
+specificYield             | specific yield                                                    | -          | scalarv | T
+specificStorage           | specific storage coefficient                                      | m-1        | scalarv | T
+f_impede                  | ice impedence factor                                              | -          | scalarv | T
+soilIceScale              | scaling factor for depth of soil ice, used to get frozen fraction | m          | scalarv | T
+soilIceCV                 | CV of depth of soil ice, used to get frozen fraction              | -          | scalarv | T
+! **********************************************************************************************************************
+! algorithmic control parameters
+! **********************************************************************************************************************
+minwind                   | minimum wind speed                                                | m s-1      | scalarv | F
+minstep                   | minimum length of the time step                                   | s          | scalarv | F
+maxstep                   | maximum length of the time step                                   | s          | scalarv | F
+wimplicit                 | weight assigned to the start-of-step fluxes (alpha)               | -          | scalarv | T
+maxiter                   | maximum number of iterations                                      | -          | scalarv | F
+relConvTol_liquid         | relative convergence tolerance for vol frac liq water             | -          | scalarv | F
+absConvTol_liquid         | absolute convergence tolerance for vol frac liq water             | -          | scalarv | F
+relConvTol_matric         | relative convergence tolerance for matric head                    | -          | scalarv | F
+absConvTol_matric         | absolute convergence tolerance for matric head                    | m          | scalarv | F
+relConvTol_energy         | relative convergence tolerance for energy                         | -          | scalarv | F
+absConvTol_energy         | absolute convergence tolerance for energy                         | J m-3      | scalarv | F
+relConvTol_aquifr         | relative convergence tolerance for aquifer storage                | -          | scalarv | F
+absConvTol_aquifr         | absolute convergence tolerance for aquifer storage                | m          | scalarv | F
+zmin                      | minimum layer depth                                               | m          | scalarv | F
+zmax                      | maximum layer depth                                               | m          | scalarv | F
+zminLayer1                | minimum layer depth for the 1st (top) layer                       | m          | scalarv | F
+zminLayer2                | minimum layer depth for the 2nd layer                             | m          | scalarv | F
+zminLayer3                | minimum layer depth for the 3rd layer                             | m          | scalarv | F
+zminLayer4                | minimum layer depth for the 4th layer                             | m          | scalarv | F
+zminLayer5                | minimum layer depth for the 5th (bottom) layer                    | m          | scalarv | F
+zmaxLayer1_lower          | maximum layer depth for the 1st (top) layer when only 1 layer     | m          | scalarv | F
+zmaxLayer2_lower          | maximum layer depth for the 2nd layer when only 2 layers          | m          | scalarv | F
+zmaxLayer3_lower          | maximum layer depth for the 3rd layer when only 3 layers          | m          | scalarv | F
+zmaxLayer4_lower          | maximum layer depth for the 4th layer when only 4 layers          | m          | scalarv | F
+zmaxLayer1_upper          | maximum layer depth for the 1st (top) layer when > 1 layer        | m          | scalarv | F
+zmaxLayer2_upper          | maximum layer depth for the 2nd layer when > 2 layers             | m          | scalarv | F
+zmaxLayer3_upper          | maximum layer depth for the 3rd layer when > 3 layers             | m          | scalarv | F
+zmaxLayer4_upper          | maximum layer depth for the 4th layer when > 4 layers             | m          | scalarv | F
+! **********************************************************************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp1.txt b/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..17a108a7d25ac2c09f180de3e8fce5a4f4c606d1
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp1.txt
@@ -0,0 +1,21 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 01:00' ! 
+simEndTime           '2000-02-11 23:00' ! 
+tmZoneInfo           'localTime' ! 
+settingsPath         '/code/summaTestCases/settings/' !  setting_path
+forcingPath          '/code/summaTestCases/testCases_data/inputData/syntheticData/wigmosta1999/' !  input_path
+outputPath           '/code/summaTestCases/output/syntheticTestCases/wigmosta1999/' !  output_path
+decisionsFile        'syntheticTestCases/wigmosta1999/summa_zDecisions.txt' !  decision
+outputControlFile    'meta/Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'syntheticTestCases/wigmosta1999/summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'syntheticTestCases/wigmosta1999/summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'syntheticTestCases/wigmosta1999/summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'syntheticTestCases/wigmosta1999/summa_zParamTrial-exp1.nc' !  para_trial
+forcingListFile      'syntheticTestCases/wigmosta1999/summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'syntheticTestCases/wigmosta1999/summa_zInitialCond.nc' !  initial_cond
+outFilePrefix        'syntheticHillslope-exp1' !  output_prefix
+vegTableFile         'VEGPARM.TBL' ! 
+soilTableFile        'SOILPARM.TBL' ! 
+generalTableFile     'GENPARM.TBL' ! 
+noahmpTableFile      'MPTABLE.TBL' ! 
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp1.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp2.txt b/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..63600322b5418f4e55665e55075cec4ec6c5d23a
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_fileManager-exp2.txt
@@ -0,0 +1,21 @@
+controlVersion       'SUMMA_FILE_MANAGER_V3.0.0' !  fman_ver
+simStartTime         '2000-01-01 01:00' !
+simEndTime           '2000-02-11 23:00' !
+tmZoneInfo           'localTime' ! Time zone info
+settingsPath         '/home/stiff/summaTestCases_3.0/settings/' !  setting_path
+forcingPath          '/home/stiff/summaTestCases_3.0/testCases_data/inputData/syntheticData/wigmosta1999/' !  input_path
+outputPath           '/home/stiff/summaTestCases_3.0/output/syntheticTestCases/wigmosta1999/' !  output_path
+decisionsFile        'syntheticTestCases/wigmosta1999/summa_zDecisions.txt' !  decision
+outputControlFile    'meta/Model_Output.txt' !  OUTPUT_CONTROL
+globalHruParamFile   'syntheticTestCases/wigmosta1999/summa_zLocalParamInfo.txt' !  local_par
+globalGruParamFile   'syntheticTestCases/wigmosta1999/summa_zBasinParamInfo.txt' !  basin_par
+attributeFile        'syntheticTestCases/wigmosta1999/summa_zLocalAttributes.nc' !  local_attr
+trialParamFile       'syntheticTestCases/wigmosta1999/summa_zParamTrial-exp2.nc' !  para_trial
+forcingListFile      'syntheticTestCases/wigmosta1999/summa_zForcingFileList.txt' !  forcing_list
+initConditionFile    'syntheticTestCases/wigmosta1999/summa_zInitialCond.nc' !  initial_cond
+outFilePrefix        'syntheticHillslope-exp2' !  output_prefix
+vegTableFile         'VEGPARM.TBL' !
+soilTableFile        'SOILPARM.TBL' !
+generalTableFile     'GENPARM.TBL' !
+noahmpTableFile      'MPTABLE.TBL' !
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp2.txt
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zBasinParamInfo.txt b/utils/laugh_tests/wigmosta1999/settings/summa_zBasinParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1926fd71fbc6ce90cd4180f652ae414885e4b611
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_zBasinParamInfo.txt
@@ -0,0 +1,35 @@
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! ***** DEFINITION OF BASIN PARAMETERS **********************************************************************************
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! ***********************************************************************************************************************
+! DEFINE BASIN MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a1), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! ***********************************************************************************************************************
+!
+! ********************************************************************
+! define format string for parameter descriptions
+! ********************************************************************
+'(a25,1x,a1,1x,3(f12.4,1x,a1,1x))' ! format string for parameter descriptions (must be in single quotes)
+! ********************************************************************
+! baseflow
+! ********************************************************************
+basin__aquiferHydCond     |       0.0100 |       0.0001 |      10.0000
+basin__aquiferScaleFactor |       3.5000 |       0.1000 |     100.0000 
+basin__aquiferBaseflowExp |       5.0000 |       1.0000 |      10.0000
+! ********************************************************************
+! within-grid routing
+! ********************************************************************
+routingGammaShape         |       2.5000 |       2.0000 |       3.0000
+routingGammaScale         |   20000.0000 |       1.0000 | 5000000.0000
+! ********************************************************************
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zDecisions.txt b/utils/laugh_tests/wigmosta1999/settings/summa_zDecisions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3548441f737f8fe5c4036ae6092ea814099e63b8
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_zDecisions.txt
@@ -0,0 +1,169 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE MODEL DECISIONS
+! ***********************************************************************************************************************
+! This file defines the modeling decisions used.
+! NOTES:
+! (1) lines starting with ! are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the name of the decision is followed by the character string defining the decision
+! (3) the simulation start/end times must be within single quotes
+! ***********************************************************************************************************************
+! ***********************************************************************************************************************
+soilCatTbl                      ROSETTA         ! (03) soil-category dateset
+vegeParTbl                      USGS            ! (04) vegetation category dataset
+soilStress                      NoahType        ! (05) choice of function for the soil moisture control on stomatal resistance
+stomResist                      BallBerry       ! (06) choice of function for stomatal resistance
+! ***********************************************************************************************************************
+num_method                      itertive        ! (07) choice of numerical method
+fDerivMeth                      analytic        ! (08) method used to calculate flux derivatives
+LAI_method                      specified       ! (09) method used to determine LAI and SAI
+f_Richards                      mixdform        ! (10) form of Richard's equation
+groundwatr                      qTopmodl        ! (11) choice of groundwater parameterization
+hc_profile                      pow_prof        ! (12) choice of hydraulic conductivity profile
+bcUpprTdyn                      nrg_flux        ! (13) type of upper boundary condition for thermodynamics
+bcLowrTdyn                      zeroFlux        ! (14) type of lower boundary condition for thermodynamics
+bcUpprSoiH                      liq_flux        ! (15) type of upper boundary condition for soil hydrology
+bcLowrSoiH                      zeroFlux        ! (16) type of lower boundary condition for soil hydrology
+veg_traits                      CM_QJRMS1988    ! (17) choice of parameterization for vegetation roughness length and displacement height
+canopyEmis                      simplExp        ! (18) choice of parameterization for canopy emissivity
+snowIncept                      lightSnow	    ! (19) choice of parameterization for snow interception
+windPrfile                      logBelowCanopy  ! (20) choice of wind profile through the canopy
+astability                      louisinv        ! (21) choice of stability function
+canopySrad                      CLM_2stream     ! (22) choice of canopy shortwave radiation method
+alb_method                      varDecay        ! (23) choice of albedo representation
+compaction                      anderson        ! (24) choice of compaction routine
+snowLayers                      CLM_2010        ! (25) choice of method to combine and sub-divide snow layers
+thCondSnow                      jrdn1991        ! (26) choice of thermal conductivity representation for snow
+thCondSoil                      mixConstit      ! (27) choice of thermal conductivity representation for soil
+spatial_gw                      localColumn     ! (28) choice of method for the spatial representation of groundwater
+subRouting                      timeDlay        ! (29) choice of method for sub-grid routing
+! ***********************************************************************************************
+! ***** description of the options available -- nothing below this point is read ****************
+! ***********************************************************************************************
+! -----------------------------------------------------------------------------------------------
+! (01) simulation start time
+! (02) simulation end time
+! -----------------------------------------------------------------------------------------------
+! (03) soil-category dateset
+! STAS      ! STATSGO dataset
+! STAS-RUC  ! ??
+! ROSETTA   ! merged Rosetta table with STAS-RUC
+! -----------------------------------------------------------------------------------------------
+! (04) vegetation category dataset
+! USGS      ! USGS 24/27 category dataset
+! MODIFIED_IGBP_MODIS_NOAH  ! MODIS 20-category dataset
+! -----------------------------------------------------------------------------------------------
+! (05) choice of function for the soil moisture control on stomatal resistance
+! NoahType  ! thresholded linear function of volumetric liquid water content
+! CLM_Type  ! thresholded linear function of matric head
+! SiB_Type  ! exponential of the log of matric head
+! -----------------------------------------------------------------------------------------------
+! (06) choice of function for stomatal resistance
+! BallBerry ! Ball-Berry
+! Jarvis    ! Jarvis
+! -----------------------------------------------------------------------------------------------
+! (07) choice of numerical method
+! itertive  ! iterative
+! non_iter  ! non-iterative
+! itersurf  ! iterate only on the surface energy balance
+! -----------------------------------------------------------------------------------------------
+! (08) method used to calculate flux derivatives
+! numericl  ! numerical derivatives
+! analytic  ! analytical derivatives
+! -----------------------------------------------------------------------------------------------
+! (09) method used to determine LAI and SAI
+! monTable  ! LAI/SAI taken directly from a monthly table for different vegetation classes
+! specified ! LAI/SAI computed from green vegetation fraction and winterSAI and summerLAI parameters
+! -----------------------------------------------------------------------------------------------
+! (10) form of Richards' equation
+! moisture  ! moisture-based form of Richards' equation
+! mixdform  ! mixed form of Richards' equation
+! -----------------------------------------------------------------------------------------------
+! (11) choice of groundwater parameterization
+! qTopmodl  ! topmodel parameterization
+! bigBuckt  ! a big bucket (lumped aquifer model)
+! noXplict  ! no explicit groundwater parameterization
+! -----------------------------------------------------------------------------------------------
+! (12) choice of hydraulic conductivity profile
+! constant  ! constant hydraulic conductivity with depth
+! pow_prof  ! power-law profile
+! -----------------------------------------------------------------------------------------------
+! (13) choice of upper boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! nrg_flux  ! energy flux
+! -----------------------------------------------------------------------------------------------
+! (14) choice of lower boundary conditions for thermodynamics
+! presTemp  ! prescribed temperature
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (15) choice of upper boundary conditions for soil hydrology
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! liq_flux  ! liquid water flux
+! -----------------------------------------------------------------------------------------------
+! (16) choice of lower boundary conditions for soil hydrology
+! drainage  ! free draining
+! presHead  ! prescribed head (volumetric liquid water content for mixed form of Richards' eqn)
+! bottmPsi  ! function of matric head in the lower-most layer
+! zeroFlux  ! zero flux
+! -----------------------------------------------------------------------------------------------
+! (17) choice of parameterization for vegetation roughness length and displacement height
+! Raupach_BLM1994  ! Raupach (BLM 1994) "Simplified expressions..."
+! CM_QJRMS1988     ! Choudhury and Monteith (QJRMS 1998) "A four layer model for the heat budget..."
+! vegTypeTable     ! constant parameters dependent on the vegetation type
+! -----------------------------------------------------------------------------------------------
+! (18) choice of parameterization for canopy emissivity
+! simplExp  ! simple exponential function
+! difTrans  ! parameterized as a function of diffuse transmissivity
+! -----------------------------------------------------------------------------------------------
+! (19) choice of parameterization for snow interception
+! stickySnow  ! maximum interception capacity an increasing function of temerature
+! lightSnow   ! maximum interception capacity an inverse function of new snow density
+! -----------------------------------------------------------------------------------------------
+! (20) choice of wind profile
+! exponential ! exponential wind profile extends to the surface
+! logBelowCanopy ! logarithmic profile below the vegetation canopy
+! -----------------------------------------------------------------------------------------------
+! (21) choice of stability function
+! standard    ! standard MO similarity, a la Anderson (1979)
+! louisinv    ! Louis (1979) inverse power function
+! mahrtexp    ! Mahrt (1987) exponential function
+! -----------------------------------------------------------------------------------------------
+! (22) choice of canopy shortwave radiation method
+! noah_mp     ! full Noah-MP implementation (including albedo)
+! CLM_2stream ! CLM 2-stream model (see CLM documentation)
+! UEB_2stream ! UEB 2-stream model (Mahat and Tarboton, WRR 2011)
+! NL_scatter  ! Simplified method Nijssen and Lettenmaier (JGR 1999)
+! BeersLaw    ! Beer's Law (as implemented in VIC)
+! -----------------------------------------------------------------------------------------------
+! (23) choice of albedo representation
+! conDecay  ! constant decay rate (e.g., VIC, CLASS)
+! varDecay  ! variable decay rate (e.g., BATS approach, with destructive metamorphism + soot content)
+! -----------------------------------------------------------------------------------------------
+! (24) choice of compaction routine
+! consettl  ! constant settlement rate
+! anderson  ! semi-empirical method of Anderson (1976)
+! -----------------------------------------------------------------------------------------------
+! (25) choice of method to combine and sub-divide snow layers
+! CLM_2010  ! CLM option: combination/sub-dividion rules depend on layer index
+! jrdn1991  ! SNTHERM option: same combination/sub-dividion rules applied to all layers
+! -----------------------------------------------------------------------------------------------
+! (26) choice of thermal conductivity representation for snow
+! tyen1965  ! Yen (1965)
+! melr1977  ! Mellor (1977)
+! jrdn1991  ! Jordan (1991)
+! smnv2000  ! Smirnova et al. (2000)
+! -----------------------------------------------------------------------------------------------
+! (27) choice of thermal conductivity representation for soil
+! funcSoilWet ! function of soil wetness
+! mixConstit  ! mixture of constituents
+! hanssonVZJ  ! test case for the mizoguchi lab experiment, Hansson et al. VZJ 2004
+! -----------------------------------------------------------------------------------------------
+! (28) choice of method for the spatial representation of groundwater
+! localColumn  ! separate groundwater representation in each local soil column
+! singleBasin  ! single groundwater store over the entire basin
+! -----------------------------------------------------------------------------------------------
+! (29) choice of method for sub-grid routing
+! timeDlay  ! time-delay histogram
+! qInstant  ! instantaneous routing
+! ***********************************************************************************************
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp1.txt
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp2.txt
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zForcingFileList.txt b/utils/laugh_tests/wigmosta1999/settings/summa_zForcingFileList.txt
new file mode 100644
index 0000000000000000000000000000000000000000..58407becc29c6c84acb4bd7d5b9a93e7e76a5b6c
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_zForcingFileList.txt
@@ -0,0 +1,8 @@
+! ****************************************************************************************************
+! List of forcing data files used
+!
+! This file includes one "word" per line:
+!  (1) The name of a forcing file
+!        --> filename must be in single quotes
+! ****************************************************************************************************
+ 'wigmosta_forcing.nc'
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zForcingInfo.txt b/utils/laugh_tests/wigmosta1999/settings/summa_zForcingInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f06e5c1a49fcf1f549e8e8123e9077782d07cc1d
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_zForcingInfo.txt
@@ -0,0 +1,29 @@
+! ***********************************************************************************************************************
+! DEFINITION OF THE FORCING FILE
+! ***********************************************************************************************************************
+! This file defines the name of the forcing data file, the number of columns in the file, the column index for each data
+!  variable, the start index of the simulation period, the length of the simulation period,
+!  and the length of the data time step
+! ***********************************************************************************************************************
+! NOTES:
+! (1) lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines
+! (2) the format definition defines the format of the file, which can be changed
+! (3) the format definition must be the first non-comment line
+! (4) the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! ***********************************************************************************************************************
+'(a15,a1,1x,a)'
+filenmData     | wigmosta_forcing.txt               ! name of the forcing data file (must be in single quotes)
+ncols          | 13                                 ! number of columns in the forcing file
+iyyy           | 1                                  ! year
+im             | 2                                  ! month
+id             | 3                                  ! day
+ih             | 4                                  ! hour
+imin           | 5                                  ! minute
+pptrate        | 7                                  ! precipitation rate              (kg m-2 s-1)
+SWRadAtm       | 8                                  ! downwelling shortwave radiaiton (W m-2)
+LWRadAtm       | 9                                  ! downwelling longwave radiation  (W m-2)
+airtemp        | 10                                 ! air temperature                 (K)
+windspd        | 11                                 ! windspeed                       (m/s)
+airpres        | 12                                 ! pressure                        (Pa)
+spechum        | 13                                 ! specific humidity               (g/g)
+data_step      | 3600                               ! length of time step (seconds)
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zInitialCond.nc b/utils/laugh_tests/wigmosta1999/settings/summa_zInitialCond.nc
new file mode 100644
index 0000000000000000000000000000000000000000..b1a9223e7e039a637a7665700609828ac5f381a6
Binary files /dev/null and b/utils/laugh_tests/wigmosta1999/settings/summa_zInitialCond.nc differ
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zLocalAttributes.nc b/utils/laugh_tests/wigmosta1999/settings/summa_zLocalAttributes.nc
new file mode 100644
index 0000000000000000000000000000000000000000..d8ead995c9d1b1a2f2286c24f5f4760ddb35c421
Binary files /dev/null and b/utils/laugh_tests/wigmosta1999/settings/summa_zLocalAttributes.nc differ
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zLocalParamInfo.txt b/utils/laugh_tests/wigmosta1999/settings/summa_zLocalParamInfo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e501f363b443358a7f4cb06906cdd3e66e1da278
--- /dev/null
+++ b/utils/laugh_tests/wigmosta1999/settings/summa_zLocalParamInfo.txt
@@ -0,0 +1,226 @@
+! =======================================================================================================================
+! =======================================================================================================================
+! ===== DEFINITION OF MODEL PARAMETERS ==================================================================================
+! =======================================================================================================================
+! =======================================================================================================================
+! Note: lines starting with "!" are treated as comment lines -- there is no limit on the number of comment lines.
+!
+! =======================================================================================================================
+! DEFINE SITE MODEL PARAMETERS
+! ------------------------------------
+! the format definition defines the format of the file, which can be changed
+! the delimiters "| " must be present (format a2), as these are used to check the integrety of the file
+! columns are:
+! 1: parameter name
+! 2: default parameter value
+! 3: lower parameter limit
+! 4: upper parameter limit
+! =======================================================================================================================
+!
+! ====================================================================
+! define format string for parameter descriptions
+! ====================================================================
+'(a25,1x,3(a1,1x,f12.4,1x))' ! format string (must be in single quotes)
+! ====================================================================
+! boundary conditions
+! ====================================================================
+upperBoundHead            |      -0.7500 |    -100.0000 |      -0.0100
+lowerBoundHead            |       0.0000 |    -100.0000 |      -0.0100
+upperBoundTheta           |       0.2004 |       0.1020 |       0.3680
+lowerBoundTheta           |       0.1100 |       0.1020 |       0.3680
+upperBoundTemp            |     272.1600 |     270.1600 |     280.1600
+lowerBoundTemp            |     274.1600 |     270.1600 |     280.1600
+! ====================================================================
+! precipitation partitioning
+! ====================================================================
+tempCritRain              |     273.1600 |     272.1600 |     274.6600
+tempRangeTimestep         |       2.0000 |       0.5000 |       5.0000
+frozenPrecipMultip        |       1.0000 |       0.5000 |       1.5000
+! ====================================================================
+! snow properties
+! ====================================================================
+snowfrz_scale             |      50.0000 |      10.0000 |    1000.0000
+fixedThermalCond_snow     |       0.3500 |       0.1000 |       1.0000
+! ====================================================================
+! snow albedo
+! ====================================================================
+albedoMax                 |       0.8400 |       0.7000 |       0.9500
+albedoMinWinter           |       0.5500 |       0.6000 |       1.0000
+albedoMinSpring           |       0.5500 |       0.3000 |       1.0000
+albedoMaxVisible          |       0.9500 |       0.7000 |       0.9500
+albedoMinVisible          |       0.7500 |       0.5000 |       0.7500
+albedoMaxNearIR           |       0.6500 |       0.5000 |       0.7500
+albedoMinNearIR           |       0.3000 |       0.1500 |       0.4500
+albedoDecayRate           |       1.0d+6 |       0.1d+6 |       5.0d+6
+albedoSootLoad            |       0.3000 |       0.1000 |       0.5000
+albedoRefresh             |       1.0000 |       1.0000 |      10.0000
+! ====================================================================
+! radiation transfer within snow
+! ====================================================================
+radExt_snow               |      20.0000 |      20.0000 |      20.0000
+directScale               |       0.0900 |       0.0000 |       0.5000
+Frad_direct               |       0.7000 |       0.0000 |       1.0000
+Frad_vis                  |       0.5000 |       0.0000 |       1.0000
+! ====================================================================
+! new snow density
+! ====================================================================
+newSnowDenMin             |     100.0000 |      50.0000 |     100.0000
+newSnowDenMult            |     100.0000 |      25.0000 |      75.0000
+newSnowDenScal            |       5.0000 |       1.0000 |       5.0000
+constSnowDen              |     100.0000 |      50.0000 |     250.0000
+newSnowDenAdd             |     109.0000 |      80.0000 |     120.0000
+newSnowDenMultTemp        |       6.0000 |       1.0000 |      12.0000
+newSnowDenMultWind        |      26.0000 |      16.0000 |      36.0000
+newSnowDenMultAnd         |       1.0000 |       1.0000 |       3.0000
+newSnowDenBase            |       0.0000 |       0.0000 |       0.0000
+! ====================================================================
+! snow compaction
+! ====================================================================
+densScalGrowth            |       0.0460 |       0.0230 |       0.0920
+tempScalGrowth            |       0.0400 |       0.0200 |       0.0600
+grainGrowthRate           |       2.7d-6 |       1.0d-6 |       5.0d-6
+densScalOvrbdn            |       0.0230 |       0.0115 |       0.0460
+tempScalOvrbdn            |       0.0800 |       0.6000 |       1.0000
+baseViscosity             |       9.0d+5 |       5.0d+5 |       1.5d+6
+! ====================================================================
+! water flow through snow
+! ====================================================================
+Fcapil                    |       0.0600 |       0.0100 |       0.1000
+k_snow                    |       0.0150 |       0.0050 |       0.0500
+mw_exp                    |       3.0000 |       1.0000 |       5.0000
+! ====================================================================
+! turbulent heat fluxes
+! ====================================================================
+z0Snow                    |       0.0010 |       0.0010 |      10.0000
+z0Soil                    |       0.0100 |       0.0010 |      10.0000
+z0Canopy                  |       0.1000 |       0.0010 |      10.0000
+zpdFraction               |       0.6500 |       0.5000 |       0.8500
+critRichNumber            |       0.2000 |       0.1000 |       1.0000
+Louis79_bparam            |       9.4000 |       9.2000 |       9.6000
+Louis79_cStar             |       5.3000 |       5.1000 |       5.5000
+Mahrt87_eScale            |       1.0000 |       0.5000 |       2.0000
+leafExchangeCoeff         |       0.0100 |       0.0010 |       0.1000
+windReductionParam        |       0.2800 |       0.0000 |       1.0000
+! ====================================================================
+! stomatal conductance
+! ====================================================================
+Kc25                      |     296.0770 |     296.0770 |     296.0770
+Ko25                      |       0.2961 |       0.2961 |       0.2961
+Kc_qFac                   |       2.1000 |       2.1000 |       2.1000
+Ko_qFac                   |       1.2000 |       1.2000 |       1.2000
+kc_Ha                     |   79430.0000 |   79430.0000 |   79430.0000
+ko_Ha                     |   36380.0000 |   36380.0000 |   36380.0000
+vcmax25_canopyTop         |      40.0000 |      20.0000 |     100.0000
+vcmax_qFac                |       2.4000 |       2.4000 |       2.4000
+vcmax_Ha                  |   65330.0000 |   65330.0000 |   65330.0000
+vcmax_Hd                  |  220000.0000 |  149250.0000 |  149250.0000
+vcmax_Sv                  |     710.0000 |     485.0000 |     485.0000
+vcmax_Kn                  |       0.6000 |       0.0000 |       1.2000
+jmax25_scale              |       2.0000 |       2.0000 |       2.0000
+jmax_Ha                   |   43540.0000 |   43540.0000 |   43540.0000
+jmax_Hd                   |  152040.0000 |  152040.0000 |  152040.0000
+jmax_Sv                   |     495.0000 |     495.0000 |     495.0000
+fractionJ                 |       0.1500 |       0.1500 |       0.1500
+quantamYield              |       0.0500 |       0.0500 |       0.0500
+vpScaleFactor             |    1500.0000 |    1500.0000 |    1500.0000
+cond2photo_slope          |       9.0000 |       1.0000 |      10.0000
+minStomatalConductance    |    2000.0000 |    2000.0000 |    2000.0000
+! ====================================================================
+! vegetation properties
+! ====================================================================
+winterSAI                 |       0.0000 |       0.0100 |       3.0000
+summerLAI                 |       0.0000 |       0.0100 |      10.0000
+rootScaleFactor1          |       2.0000 |       1.0000 |      10.0000
+rootScaleFactor2          |       5.0000 |       1.0000 |      10.0000
+rootingDepth              |       1.0000 |       0.0100 |      10.0000
+rootDistExp               |       1.0000 |       0.0100 |       1.0000
+plantWiltPsi              |    -150.0000 |    -500.0000 |       0.0000
+soilStressParam           |       5.8000 |       4.3600 |       6.3700
+critSoilWilting           |       0.3500 |       0.0000 |       1.0000
+critSoilTranspire         |       0.1750 |       0.0000 |       1.0000
+critAquiferTranspire      |       0.2000 |       0.1000 |      10.0000
+minStomatalResistance     |      50.0000 |      10.0000 |     200.0000
+leafDimension             |       0.0400 |       0.0100 |       0.1000
+heightCanopyTop           |       0.0100 |       0.0500 |     100.0000
+heightCanopyBottom        |       0.0010 |       0.0000 |       5.0000
+specificHeatVeg           |     874.0000 |     500.0000 |    1500.0000
+maxMassVegetation         |      25.0000 |       1.0000 |      50.0000
+throughfallScaleSnow      |       0.5000 |       0.1000 |       0.9000
+throughfallScaleRain      |       0.5000 |       0.1000 |       0.9000
+refInterceptCapSnow       |       6.6000 |       1.0000 |      14.0000
+refInterceptCapRain       |       1.0000 |       0.0100 |       1.0000
+snowUnloadingCoeff        |       1.3d-6 |       0.0000 |       1.5d-6
+canopyDrainageCoeff       |       0.0050 |       0.0010 |       0.0100
+ratioDrip2Unloading       |       0.4000 |       0.0000 |       1.0000
+canopyWettingFactor       |       0.7000 |       0.0000 |       1.0000
+canopyWettingExp          |       1.0000 |       0.0000 |       1.0000
+! ====================================================================
+! soil properties
+! ====================================================================
+soil_dens_intr            |    2700.0000 |     500.0000 |    4000.0000
+thCond_soil               |       5.5000 |       2.9000 |       8.4000
+frac_sand                 |       0.1600 |       0.0000 |       1.0000
+frac_silt                 |       0.2800 |       0.0000 |       1.0000
+frac_clay                 |       0.5600 |       0.0000 |       1.0000
+fieldCapacity             |       0.1000 |       0.0000 |       1.0000
+wettingFrontSuction       |       0.3000 |       0.1000 |       1.5000
+theta_mp                  |       0.3750 |       0.3000 |       0.6000
+theta_sat                 |       0.3500 |       0.3000 |       0.6000
+theta_res                 |       0.1000 |       0.0010 |       0.1000
+vGn_alpha                 |      -0.5000 |      -1.0000 |      -0.0100
+vGn_n                     |       1.5000 |       1.0000 |       3.0000
+mpExp                     |       5.0000 |       1.0000 |      10.0000
+k_soil                    | 0.0008333333 |       1.d-07 |     100.d-07
+k_macropore               | 0.0008333333 |       1.d-07 |     100.d-07
+kAnisotropic              |       1.0000 |       0.0001 |      10.0000
+zScale_TOPMODEL           |       3.0000 |       0.1000 |     100.0000
+compactedDepth            |       0.0000 |       0.0000 |       1.0000
+aquiferScaleFactor        |       0.3500 |       0.1000 |     100.0000
+aquiferBaseflowExp        |       2.0000 |       1.0000 |      10.0000
+aquiferBaseflowRate       |       2.0000 |       1.0000 |      10.0000
+qSurfScale                |     100.0000 |       1.0000 |     100.0000
+specificYield             |       0.2000 |       0.1000 |       0.3000
+specificStorage           |       1.d-06 |       1.d-05 |       1.d-07
+f_impede                  |       0.0000 |       1.0000 |      10.0000
+soilIceScale              |       0.1300 |       0.0001 |       1.0000
+soilIceCV                 |       0.4500 |       0.1000 |       5.0000
+! ====================================================================
+! algorithmic control parameters
+! ====================================================================
+minwind                   |       0.1000 |       0.0010 |       1.0000
+minstep                   |       1.0000 |       1.0000 |    1800.0000
+maxstep                   |    3600.0000 |      60.0000 |    1800.0000
+wimplicit                 |       0.0000 |       0.0000 |       1.0000
+maxiter                   |      20.0000 |       1.0000 |     100.0000
+relConvTol_liquid         |       1.0d-3 |       1.0d-5 |       1.0d-1
+absConvTol_liquid         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_matric         |       1.0d-5 |       1.0d-5 |       1.0d-1
+absConvTol_matric         |       1.0d-5 |       1.0d-8 |       1.0d-3
+relConvTol_energy         |       1.0d-2 |       1.0d-5 |       1.0d-1
+absConvTol_energy         |       1.0d-0 |       1.0d-2 |       1.0d+1
+relConvTol_aquifr         |       1.0d-0 |       1.0d-2 |       1.0d+1
+absConvTol_aquifr         |       1.0d-5 |       1.0d-5 |       1.0d-1
+zmin                      |       0.0100 |       0.0050 |       0.1000
+zmax                      |       0.0500 |       0.0100 |       0.5000
+! ---
+zminLayer1                |       0.0075 |       0.0075 |       0.0075
+zminLayer2                |       0.0100 |       0.0100 |       0.0100
+zminLayer3                |       0.0500 |       0.0500 |       0.0500
+zminLayer4                |       0.1000 |       0.1000 |       0.1000
+zminLayer5                |       0.2500 |       0.2500 |       0.2500
+! ---
+zmaxLayer1_lower          |       0.0500 |       0.0500 |       0.0500
+zmaxLayer2_lower          |       0.2000 |       0.2000 |       0.2000
+zmaxLayer3_lower          |       0.5000 |       0.5000 |       0.5000
+zmaxLayer4_lower          |       1.0000 |       1.0000 |       1.0000
+! ---
+zmaxLayer1_upper          |       0.0300 |       0.0300 |       0.0300
+zmaxLayer2_upper          |       0.1500 |       0.1500 |       0.1500
+zmaxLayer3_upper          |       0.3000 |       0.3000 |       0.3000
+zmaxLayer4_upper          |       0.7500 |       0.7500 |       0.7500
+! ====================================================================
+minTempUnloading          |       270.16 |       260.16 |       273.16
+minWindUnloading          |       0.0000 |       0.0000 |       10.000
+rateTempUnloading         |      1.87d+5 |       1.0d+5 |       3.0d+5
+rateWindUnloading         |      1.56d+5 |       1.0d+5 |       3.0d+5
+! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp1.txt! history Mon Jul 20 16:08:17 2020: /pool0/home/andrbenn/data/summa_3/utils/convert_summa_config_v2_v3.py ./syntheticTestCases/wigmosta1999/summa_fileManager-exp2.txt
\ No newline at end of file
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp1.nc b/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp1.nc
new file mode 100644
index 0000000000000000000000000000000000000000..4dd01a1221d97fe1e39e9002dffe93bae7779fba
Binary files /dev/null and b/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp1.nc differ
diff --git a/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp2.nc b/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp2.nc
new file mode 100644
index 0000000000000000000000000000000000000000..675ae086f8ce79897076a7e72dd813cb4cc2ccd5
Binary files /dev/null and b/utils/laugh_tests/wigmosta1999/settings/summa_zParamTrial-exp2.nc differ