From 1da1d318117bb680d560db817f228fd3667fcf68 Mon Sep 17 00:00:00 2001
From: KyleKlenk <kyle.c.klenk@gmail.com>
Date: Wed, 7 Dec 2022 18:44:27 -0600
Subject: [PATCH] Fixed the issue with wrong timesteps

---
 bin/submission_one.sh                         |  21 ++--
 .../actors/hru_actor/cpp_code/hru_actor.cpp   | 100 ------------------
 build/source/engine/coupled_em.f90            |   2 +-
 3 files changed, 12 insertions(+), 111 deletions(-)

diff --git a/bin/submission_one.sh b/bin/submission_one.sh
index 67f8966..e2ad687 100755
--- a/bin/submission_one.sh
+++ b/bin/submission_one.sh
@@ -1,20 +1,21 @@
 #!/bin/bash
-#SBATCH --cpus-per-task=8
+#SBATCH --cpus-per-task=1
 #SBATCH --time=01:00:00
-#SBATCH --mem=32G
+#SBATCH --mem=2G
 #SBATCH --job-name=Summa-Actors
 #SBATCH --mail-user=kyle.klenk@usask.ca
 #SBATCH --mail-type=ALL
 #SBATCH --output=/scratch/gwf/gwf_cmt/kck540/Summa-Actors/slurm/Summa-Actors%A_%a.out
 #SBATCH --account=hpc_c_giws_clark
+#SBATCH --array=0-1
 
-# offset=$SLURM_ARRAY_TASK_ID
-# if [ $offset -eq 0 ]
-# then
-#     /globalhome/kck540/HPC/Summa-Projects/Summa-Actors/bin/summaMain -g 1 -n 1 -c /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/Summa_Actors_Settings.json
+offset=$SLURM_ARRAY_TASK_ID
+if [ $offset -eq 0 ]
+then
+    /globalhome/kck540/HPC/Summa-Projects/Summa-Actors/bin/summaMain -g 1 -n 15 -c /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/Summa_Actors_Settings.json
 
-# else
-#     /globalhome/kck540/HPC/Summa-Projects/Summa-Actors/build/summa/bin/summa.exe -g 1 1 -m /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/OutputTesting/fileManager_SummaOriginal.txt
+else
+    /globalhome/kck540/HPC/Summa-Projects/Summa-Actors/build/summa/bin/summa.exe -g 1 15 -m /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/OutputTesting/fileManager_SummaOriginal.txt
 
-# fi
-/globalhome/kck540/HPC/Summa-Projects/Summa-Actors/bin/summaMain -g 1 -n 1500 -c /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/Summa_Actors_Settings.json
+fi
+# /globalhome/kck540/HPC/Summa-Projects/Summa-Actors/bin/summaMain -g 1 -n 1 -c /project/gwf/gwf_cmt/kck540/domain_NorthAmerica/summa_actors_input/Summa_Actors_Settings.json
diff --git a/build/source/actors/hru_actor/cpp_code/hru_actor.cpp b/build/source/actors/hru_actor/cpp_code/hru_actor.cpp
index a701361..28bf058 100644
--- a/build/source/actors/hru_actor/cpp_code/hru_actor.cpp
+++ b/build/source/actors/hru_actor/cpp_code/hru_actor.cpp
@@ -372,42 +372,6 @@ int Run_HRU(stateful_actor<hru_state>* self) {
     }
     self->state.hru_timing.updateEndPoint("run_physics_duration");
 
-    // self->state.hru_timing.updateStartPoint("write_output_duration");
-    
-
-
-    // prepareOutput(&self->state.timestep,
-    //     self->state.handle_forcStat,
-    //     self->state.handle_progStat,
-    //     self->state.handle_diagStat,
-    //     self->state.handle_fluxStat,
-    //     self->state.handle_indxStat,
-    //     self->state.handle_bvarStat,
-    //     self->state.handle_timeStruct,
-    //     self->state.handle_forcStruct,
-    //     self->state.handle_attrStruct,
-    //     self->state.handle_typeStruct,
-    //     self->state.handle_indxStruct,
-    //     self->state.handle_mparStruct,
-    //     self->state.handle_progStruct,
-    //     self->state.handle_diagStruct,
-    //     self->state.handle_fluxStruct,
-    //     self->state.handle_bparStruct,
-    //     self->state.handle_bvarStruct,
-    //     self->state.handle_statCounter,
-    //     self->state.handle_outputTimeStep,
-    //     self->state.handle_resetStats,
-    //     self->state.handle_finalizeStats,
-    //     self->state.handle_finshTime,
-    //     self->state.handle_oldTime,
-    //     &self->state.err);
-    // if (self->state.err != 0) {
-    //     aout(self) << "Error: WriteOutput - HRU = " << self->state.indxHRU << 
-    //         " - indxGRU = " << self->state.indxGRU << " - refGRU = " << self->state.refGRU <<
-    //         " - Timestep = " << self->state.timestep << std::endl;
-    //     return 30;
-    // }
-    // self->state.hru_timing.updateEndPoint("write_output_duration");
 
     return 0;      
 }
@@ -416,68 +380,4 @@ void printOutput(stateful_actor<hru_state>* self) {
         aout(self) << self->state.refGRU << " - Timestep = " << self->state.timestep << std::endl;
 }
 
-void getAndSendOutput(stateful_actor<hru_state>* self) {
-    // Get Data from fortran
-    // struct hru_output_state = getHRUOutput();
-    // statistic structures
-    std::vector<std::vector<double>> forc_stat_array    = get_var_dlength(self->state.handle_forcStat);
-    std::vector<std::vector<double>> prog_stat_array    = get_var_dlength(self->state.handle_progStat);
-    std::vector<std::vector<double>> diag_stat_array    = get_var_dlength(self->state.handle_diagStat);
-    std::vector<std::vector<double>> flux_stat_array    = get_var_dlength(self->state.handle_fluxStat);
-    std::vector<std::vector<double>> indx_stat_array    = get_var_dlength(self->state.handle_indxStat);
-    std::vector<std::vector<double>> bvar_stat_array    = get_var_dlength(self->state.handle_bvarStat);
-    // primary data structures (scalars)
-    std::vector<int>      time_struct_array             = get_var_i(self->state.handle_timeStruct);
-    std::vector<double>   forc_struct_array             = get_var_d(self->state.handle_forcStruct);
-    std::vector<double>   attr_struct_array             = get_var_d(self->state.handle_attrStruct); 
-    std::vector<int>      type_struct_array             = get_var_i(self->state.handle_typeStruct);
-    std::vector<long int> id_struct_array               = get_var_i8(self->state.handle_idStruct);
-    // primary data structures (variable length vectors)
-    std::vector<std::vector<int>>    indx_struct_array  = get_var_ilength(self->state.handle_indxStruct);
-    std::vector<std::vector<double>> mpar_struct_array  = get_var_dlength(self->state.handle_mparStruct);
-    std::vector<std::vector<double>> prog_struct_array  = get_var_dlength(self->state.handle_progStruct);
-    std::vector<std::vector<double>> diag_struct_array  = get_var_dlength(self->state.handle_diagStruct);
-    std::vector<std::vector<double>> flux_struct_array  = get_var_dlength(self->state.handle_fluxStruct);
-    // basin-average structures
-    std::vector<double>              bpar_struct_array  = get_var_d(self->state.handle_bparStruct);
-    std::vector<std::vector<double>> bvar_struct_array  = get_var_dlength(self->state.handle_bvarStruct);
-    // ancillary data structures
-    std::vector<double>   dpar_struct_array             = get_var_d(self->state.handle_dparStruct);
-    std::vector<int>      finalize_stats_array          = get_flagVec(self->state.handle_finalizeStats);
-    std::vector<int>      output_time_step_array        = get_var_i(self->state.handle_outputTimeStep);
-
-    // Send the output to the file_access_actor            
-    self->send(self->state.file_access_actor, write_output_v,
-        self->state.indxGRU,
-        self->state.indxHRU,
-        self,
-        // statistic structures
-        forc_stat_array,
-        prog_stat_array,
-        diag_stat_array,
-        flux_stat_array,
-        indx_stat_array,
-        bvar_stat_array,
-        // primary data structures (scalars)
-        time_struct_array,
-        forc_struct_array,
-        attr_struct_array,
-        type_struct_array,
-        id_struct_array,
-        // primary data structures (variable length vectors)
-        indx_struct_array,
-        mpar_struct_array,
-        prog_struct_array,
-        diag_struct_array,
-        flux_struct_array,
-        // basin-average structures
-        bpar_struct_array,
-        bvar_struct_array,
-        // ancillary data structures
-        dpar_struct_array,
-        finalize_stats_array,
-        output_time_step_array);
-
-}
-
 }
\ No newline at end of file
diff --git a/build/source/engine/coupled_em.f90 b/build/source/engine/coupled_em.f90
index 03cbae5..0ba8e5b 100644
--- a/build/source/engine/coupled_em.f90
+++ b/build/source/engine/coupled_em.f90
@@ -1155,7 +1155,7 @@ subroutine coupled_em(&
     endif
 
     ! adjust length of the sub-step (make sure that we don't exceed the step)
-    dt_sub = data_step - dt_solv
+    dt_sub = min(data_step - dt_solv, dt_sub)
 
   end do  substeps ! (sub-step loop)
 
-- 
GitLab