Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Horizontal ground heat exchanger

asked 2023-12-11 12:54:29 -0500

Ruth Urban's avatar

updated 2023-12-13 08:52:02 -0500

Edited to provide answers for Denis:

OpenStudio Application version? 1.6.0+53c249a897 (SDK 3.6.1)

does the saved .osm file hold an instance of OS:Site:GroundTemperature:Undisturbed:KusudaAchenbach? No

if so, can you post the .osm excerpt? NA

might as well post the OS:GroundHeatExchanger:HorizontalTrench .osm definition: See below

image description


I created an OpenStudio model with a horizontal ground heat exchanger, but OpenStudio isn’t allowing input of “Undisturbed Ground Temperature Model” in the object “OS:GroundHeatExchanger:HorizontalTrench”. The field is greyed-out and can’t be selected.

The model simulates properly (no crashing) when using default entries for a vertical ground field, but when I switch it for a horizontal ground field and simulate the model it crashes with the following message:

“[BOOST_ASSERT] <2> Assertion modelObject failed on line 175 of class openstudio::model::ModelObject __cdecl openstudio::model::detail::GroundHeatExchangerHorizontalTrench_Impl::undisturbedGroundTemperatureModel(void) const in file D:\OSN\src\model\GroundHeatExchangerHorizontalTrench.cpp.”

Based on this background, can somebody explain what might be wrong with my model to prevent it from simulating a horizontal GSHP field? Is there an input in OpenStudio that will allow me to select an “Undisturbed Ground Temperature Model”? Is the field supposed to be greyed-out?

Can OpenStudio simulate horizontal ground heat exchangers?

(There's a similar question from about 7 years ago--suggesting that there was a problem, but followed by discussion of the problem having been fixed. Perhaps the problem has been reintroduced?)

edit retag flag offensive close merge delete


I'm able to reproduce the crash, based on your .osm excerpt. See the recent EDIT in the initial answer (bug description + short term solution).

Denis Bourgeois's avatar Denis Bourgeois  ( 2023-12-13 10:12:21 -0500 )edit

2 Answers

Sort by » oldest newest most voted

answered 2023-12-22 08:18:52 -0500

Ruth Urban's avatar

Thanks for your help @Denis Bourgeois. As outlined in your previous instructions, we ran a measure in OpenStudio which generated the trench ground field and an associated OS:Site:GroundTemperature:Undisturbed:KusudaAchenbach object. We then modified the default parameters for KusudaAchenbach in the osm file because OpenStudio's interface didn't seem to allow revisions to this object's parameters. For anybody who has this issue in the future, here is the code for the measure that we ran:

 # start the measure
 class AddHorizontalTrenchFieldForGSHP < OpenStudio::Measure::ModelMeasure
   # human readable name
   def name
     return "Add trench horizontal ground field for GSHP."
   # human readable description
   def description
     return "This measure adds a trench horizontal ground field."
   # human readable description of modeling approach
   def modeler_description
     return " This measure adds a trench horizontal ground field. "

# define what happens when the measure is run def run(model, runner, user_arguments) super(model, runner, user_arguments) trench = loop = model.getPlantLoopByName("GSHP Loop Name").get loop.addSupplyBranchForComponent(trench) end end

# register the measure to be used by the application

Hopefully this will be helpful to someone.

edit flag offensive delete link more


Issue raised here (thanks @Ruth Urban), reiterated here. Hopefully fixed for upcoming OpenStudioApplication release v1.7.0.

Denis Bourgeois's avatar Denis Bourgeois  ( 2024-01-02 10:34:24 -0500 )edit

answered 2023-12-11 15:10:09 -0500

updated 2023-12-13 12:57:22 -0500

(@Ruth Urban : not an answer per se, but this may narrow down the issue).

GHX horizontal trench options in OpenStudio (App vs SDK) have evolved somewhat over the last 12 months (e.g. this PR), between SDK v3.5.0 and v3.6.0. From the comments, this may continue to evolve through SDK v3.8.0. I suspect you're using OpenStudio Application v1.6.0 (i.e. SDK v3.6.1), as the code seems to be tripping here (line 175). Yet it's unclear if it's on the App side of things (vs the SDK), incomplete/invalid input elsewhere, etc.

FYI, if I take the US DOE Prototype Warehouse and apply the following changes:

require "openstudio"

translator =
path       ="warehouse.osm")
model      = translator.loadModel(path)
model      = model.get
trench     =
loop       = model.getPlantLoopByName("Main Service Water Loop").get

loop.addSupplyBranchForComponent(trench)"alt_warehouse.osm", true)

I can then re-open the altered file with the App:


... where the undisturbed ground temperature model has been generated automatically. Simulation runs without any warnings/errors (of course, results are meaningless in this case). I don't believe one can otherwise add (let alone edit) an undisturbed ground temperature model with the App. If it's greyed out in your case, it would appear the undisturbed ground temperature model hasn't been generated, isn't found, or something along those lines.

Can you edit your initial question by providing more info?

  • OpenStudio Application version?
  • does the saved .osm file hold an instance of OS:Site:GroundTemperature:Undisturbed:KusudaAchenbach?
  • if so, can you post the .osm excerpt?
  • might as well post the OS:GroundHeatExchanger:HorizontalTrench .osm definition ...

EDIT @Ruth Urban : OK, I can reproduce your exact issue with the basic test I initially suggested (modified warehouse example above). If I manually delete the "Undisturbed Ground Temperature Model" parameter of an OS:GroundHeatExchanger:HorizontalTrench object in an .osm file (just like your .osm excerpt) :

  {3f4c66c5-cedc-4dbb-943d-73e64ad57fb9}, !- Handle
  Ground Heat Exchanger Horizontal Trench 1, !- Name
  {920159c0-63d1-48eb-a2df-b275b0aed5f3}, !- Inlet Node Name
  {3640a33d-46e5-467d-9c1c-73a65c8cd5e2}, !- Outlet Node Name
  0.004,                                  !- Design Flow Rate {m3/s}
  75,                                     !- Trench Length in Pipe Axial Direction {m}
  2,                                      !- Number of Trenches
  2,                                      !- Horizontal Spacing Between Pipes {m}
  0.016,                                  !- Pipe Inner Diameter {m}
  0.02667,                                !- Pipe Outer Diameter {m}
  1.25,                                   !- Burial Depth {m}
  1.08,                                   !- Soil Thermal Conductivity {W/m-K}
  962,                                    !- Soil Density {kg/m3}
  2576,                                   !- Soil Specific Heat {J/kg-K}
  0.3895,                                 !- Pipe Thermal Conductivity {W/m-K}
  641,                                    !- Pipe Density {kg/m3}
  2405,                                   !- Pipe Specific Heat {J/kg-K}
  30,                                     !- Soil Moisture Content Percent {percent}
  50,                                     !- Soil Moisture Content Percent at ...
  ,                                       !- Undisturbed Ground Temperature Model
  0.408;                                  !- Evapotranspiration Ground Cover Parameter

... the OpenStudio binary/executable will crash with the following:

[BOOST_ASSERT] <2> Assertion modelObject failed on line 175 of openstudio::model::ModelObject openstudio::model::detail::GroundHeatExchangerHorizontalTrench_Impl::undisturbedGroundTemperatureModel() const in file /Users/jenkins/git/OpenStudioFull/3.6.1/src/model/GroundHeatExchangerHorizontalTrench.cpp.

Some OpenStudio objects can have certain parameters ... (more)

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops


Question Tools


Asked: 2023-12-11 12:54:29 -0500

Seen: 209 times

Last updated: Jan 02