Skip to content

Commit

Permalink
fixes problems in previous merge of elm_api
Browse files Browse the repository at this point in the history
  • Loading branch information
ecoon committed Jan 10, 2025
1 parent 89dda81 commit cf220ac
Show file tree
Hide file tree
Showing 11 changed files with 288 additions and 313 deletions.
32 changes: 24 additions & 8 deletions src/executables/elm_ats_api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ include(FortranCInterface)
FortranCInterface_VERIFY(CXX)

include_directories(${ATS_SOURCE_DIR}/src/executables)
include_directories(${ATS_SOURCE_DIR}/src/executables/elm_ats_api)

set(elm_ats_src_files
${ATS_SOURCE_DIR}/src/executables/coordinator.cc
Expand All @@ -36,12 +37,27 @@ if (APPLE AND BUILD_SHARED_LIBS)
set_target_properties(elm_ats PROPERTIES LINK_FLAGS "-Wl,-undefined,dynamic_lookup")
endif()

# ## build static lib
# add_amanzi_library(elm_ats_static
# STATIC
# SOURCE ${elm_ats_src_files}
# HEADERS ${elm_ats_inc_files}
# LINK_LIBS ${fates_link_libs} ${tpl_link_libs} ${ats_link_libs} ${amanzi_link_libs})

# re-enable later
##add_subdirectory(test)
#
# These used to work, but need an inputfile that I'm not sure where it is... --ETC
#
# if (BUILD_TESTS)

# # Add UnitTest includes
# include_directories(${UnitTest_INCLUDE_DIRS})
# include_directories(${EXECUTABLE_SOURCE_DIR})

# # test for ELM API
# add_amanzi_test(elm_ats_cc_test elm_ats_cc_test
# KIND int
# SOURCE test/elm_ats_test.cc
# LINK_LIBS elm_ats ${ats_link_libs} ${UnitTest_LIBRARIES})

# # test for ELM API in fortran
# add_amanzi_test(elm_ats_fort_test elm_ats_fort_test
# KIND int
# SOURCE test/fortran/ats_mod.f90 test/fortran/test.f90
# LINK_LIBS elm_ats ${ats_link_libs} ${UnitTest_LIBRARIES})

# endif()

41 changes: 15 additions & 26 deletions src/executables/elm_ats_api/elm_ats_api.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ void ats_setup(ELM_ATSDriver_ptr ats)

// call driver initialize()
void ats_initialize(ELM_ATSDriver_ptr ats,
double const * const t,
double const * const patm,
double const * const soilp)
double const * const start_time,
double const * const soil_water_content,
double const * const soil_pressure)
{
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)->initialize(*t, patm, soilp);
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)->initialize(*start_time, soil_water_content, soil_pressure);
}


Expand All @@ -90,15 +90,6 @@ void ats_set_soil_hydrologic_parameters(ELM_ATSDriver_ptr ats,
}


void ats_set_veg_parameters(ELM_ATSDriver_ptr ats,
double const * const mafic_potential_full_turgor,
double const * const mafic_potential_wilt_point)
{
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)
->set_veg_parameters(mafic_potential_full_turgor, mafic_potential_wilt_point);
}


void ats_set_soil_hydrologic_properties(ELM_ATSDriver_ptr ats,
double const * const effective_porosity)
{
Expand All @@ -118,38 +109,36 @@ void ats_set_veg_properties(ELM_ATSDriver_ptr ats,

// call driver set_sources()
void ats_set_sources(ELM_ATSDriver_ptr ats,
double const * const surface_infiltration,
double const * const surface_evaporation,
double const * const subsurface_transpiration)
double const * const surface_source,
double const * const potential_evaporation,
double const * const potential_transpiration)
{
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)
->set_potential_sources(surface_infiltration, surface_evaporation, subsurface_transpiration);
->set_potential_sources(surface_source, potential_evaporation, potential_transpiration);
}


void ats_get_waterstate(ELM_ATSDriver_ptr ats,
double * const surface_ponded_depth,
double * const ponded_depth,
double * const water_table_depth,
double * const soil_pressure,
double * const soil_psi,
double * const sat_liq,
double * const sat_ice)
double * const mass_water_content)
{
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)
->get_waterstate(surface_ponded_depth, water_table_depth, soil_pressure, soil_psi, sat_liq, sat_ice);
->get_waterstate(ponded_depth, water_table_depth, mass_water_content);
}


void ats_get_water_fluxes(ELM_ATSDriver_ptr ats,
double * const soil_infiltration,
double * const infiltration,
double * const evaporation,
double * const transpiration,
double * const root_flux,
double * net_subsurface_fluxes,
double * net_runon)
{
reinterpret_cast<ATS::ELM_ATSDriver*>(ats)
->get_water_fluxes(soil_infiltration, evaporation, transpiration,
net_subsurface_fluxes, net_runon);
->get_water_fluxes(infiltration, evaporation, transpiration,
root_flux, net_subsurface_fluxes, net_runon);
}

#ifdef __cplusplus
Expand Down
29 changes: 10 additions & 19 deletions src/executables/elm_ats_api/elm_ats_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ void ats_setup(ELM_ATSDriver_ptr ats);

// call driver initialize()
void ats_initialize(ELM_ATSDriver_ptr ats,
double const * const t,
double const * const patm,
double const * const soilp);
double const * const start_time,
double const * const soil_water_content,
double const * const soil_pressure);

// set material parameters, which are constant in time
void ats_set_soil_hydrologic_parameters(ELM_ATSDriver_ptr ats,
Expand All @@ -79,11 +79,6 @@ void ats_set_soil_hydrologic_parameters(ELM_ATSDriver_ptr ats,
double const * const clapp_horn_smpsat,
double const * const clapp_horn_sr);

// set veg parameters, which are constant in time
void ats_set_veg_parameters(ELM_ATSDriver_ptr ats,
double const * const mafic_potential_full_turgor,
double const * const mafic_potential_wilt_point);

//
// Called prior to timestep advance
// -----------------------------------------------------------------------------
Expand All @@ -96,12 +91,10 @@ void ats_set_veg_properties(ELM_ATSDriver_ptr ats,
double const * const rooting_fraction);

// call driver set_sources()
// soil_infiltration & soil_evaporation are 1D arrays of length ncols
// root_transpiration is a 1D array array of length (ncells)
void ats_set_sources(ELM_ATSDriver_ptr ats,
double const * const surface_infiltration,
double const * const surface_evaporation,
double const * const subsurface_transpiration);
double const * const surface_source,
double const * const potential_evaporation,
double const * const potential_transpiration);


//
Expand All @@ -111,17 +104,15 @@ void ats_set_sources(ELM_ATSDriver_ptr ats,
// surface_pressure is a 1D array of length ncols
// soil_pressure & saturation are 1D arrays array of length (ncells)
void ats_get_waterstate(ELM_ATSDriver_ptr ats,
double * const surface_ponded_depth,
double * const ponded_depth,
double * const water_table_depth,
double * const soil_pressure,
double * const soil_psi,
double * const sat_liq,
double * const sat_ice);
double * const mass_water_content);

void ats_get_water_fluxes(ELM_ATSDriver_ptr ats,
double * const soil_infiltration,
double * const infiltration,
double * const evaporation,
double * const transpiration,
double * const root_flux,
double * net_subsurface_fluxes,
double * net_runon);

Expand Down
Loading

0 comments on commit cf220ac

Please sign in to comment.