Skip to content
Snippets Groups Projects
Commit ac951823 authored by Kyle Klenk's avatar Kyle Klenk
Browse files

This code produces the same results as normal sundials

parent 93c6d3e8
No related branches found
No related tags found
1 merge request!9Integrating Restart and V4 changes
......@@ -40,18 +40,24 @@ behavior file_access_actor(stateful_actor<file_access_state>* self,
self->state.summa_init_struc = std::make_unique<SummaInitStruc>();
int err = self->state.summa_init_struc->allocate(self->state.num_gru);
if (err != 0) aout(self) << "ERROR: SummaInitStruc allocation failed\n";
err = self->state.summa_init_struc->summa_paramSetup();
if (err != 0) aout(self) << "ERROR: SummaInitStruc paramSetup failed\n";
err = self->state.summa_init_struc->summa_readRestart();
if (err != 0) aout(self) << "ERROR: SummaInitStruc readRestart failed\n";
if (self->state.summa_init_struc->allocate(self->state.num_gru) != 0) {
aout(self) << "ERROR -- File_Access_Actor: SummaInitStruc allocation failed\n";
return -1;
}
if (self->state.summa_init_struc->summa_paramSetup() != 0) {
aout(self) << "ERROR -- File_Access_Actor: SummaInitStruc paramSetup failed\n";
return -1;
}
if (self->state.summa_init_struc->summa_readRestart()!= 0) {
aout(self) << "ERROR -- File_Access_Actor: SummaInitStruc readRestart failed\n";
return -1;
}
// Get the information about the forcing files
self->state.forcing_files = std::make_unique<forcingFileContainer>();
err = self->state.forcing_files->initForcingFiles();
if (err != 0) return -1;
if (self->state.forcing_files->initForcingFiles() != 0) return -1;
int err = 0;
std::unique_ptr<char[]> message(new char[256]);
fileAccessActor_init_fortran(&self->state.num_steps,
&fa_settings.num_timesteps_in_output_buffer,
......
#include "summa_init_struc.hpp"
#include <memory>
#include <iostream>
SummaInitStruc::SummaInitStruc() {}
......@@ -11,6 +12,7 @@ int SummaInitStruc::allocate(int num_gru) {
int err = 0;
std::unique_ptr<char[]> message(new char[256]);
initialize_init_struc(num_gru, err, &message);
if (err != 0) std::cout << message.get() << std::endl;
return err;
}
......@@ -18,6 +20,7 @@ int SummaInitStruc::summa_paramSetup() {
int err = 0;
std::unique_ptr<char[]> message(new char[256]);
paramSetup_fortran(err, &message);
if (err != 0) std::cout << message.get() << std::endl;
return err;
}
......@@ -25,6 +28,7 @@ int SummaInitStruc::summa_readRestart() {
int err = 0;
std::unique_ptr<char[]> message(new char[256]);
readRestart_fortran(err, &message);
if (err != 0) std::cout << message.get() << std::endl;
return err;
}
......@@ -25,6 +25,9 @@ subroutine initialize_init_struc(num_gru, err, message_r) bind(C, name="initiali
indx_meta, &
bpar_meta, &
bvar_meta
#ifdef V4_ACTIVE
USE globalData,only:lookup_meta
#endif
! statistics metadata structures
USE globalData,only:statForc_meta, & ! child metadata for stats
statProg_meta, & ! child metadata for stats
......@@ -49,6 +52,9 @@ subroutine initialize_init_struc(num_gru, err, message_r) bind(C, name="initiali
call f_c_string_ptr(trim(message), message_r)
allocate(init_struc)
summaVars: associate(&
#ifdef V4_ACTIVE
lookupStruct =>init_struc%lookupStruct , & ! x%gru(:)%hru(:)%z(:)%var(:)%lookup(:) -- lookup tables
#endif
! statistics structures
forcStat => init_struc%forcStat , & ! x%gru(:)%hru(:)%var(:)%dat -- model forcing data
progStat => init_struc%progStat , & ! x%gru(:)%hru(:)%var(:)%dat -- model prognostic (state) variables
......@@ -105,6 +111,9 @@ subroutine initialize_init_struc(num_gru, err, message_r) bind(C, name="initiali
case('flux'); call allocGlobal(flux_meta, fluxStruct, err, cmessage) ! model fluxes
case('bpar'); call allocGlobal(bpar_meta, bparStruct, err, cmessage) ! basin-average parameters
case('bvar'); call allocGlobal(bvar_meta, bvarStruct, err, cmessage) ! basin-average variables
#ifdef V4_ACTIVE
case('lookup'); call allocGlobal(lookup_meta, lookupStruct, err, cmessage) ! lookup tables
#endif
case('deriv'); cycle
case default; err=20; message='unable to find structure name: '//trim(structInfo(iStruct)%structName)
end select
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment