Tutorial
4. Parametric Modeling of Greenhouse Geometry

4. Parametric Modeling of Different Greenhouse Structures

GreenLightPlus offers robust parametric modeling capabilities, allowing users to create and simulate various greenhouse models with different structures. This section will detail how to use the GreenhouseGeometry class to achieve this functionality.

Before starting, please ensure you have the following dependencies installed:

pip install GreenLightPlus

4.1 Import Necessary Modules

First, we need to import the GreenhouseGeometry class:

from GreenLightPlus import GreenhouseGeometry

4.2 Define Greenhouse Roof Types

GreenLightPlus supports a variety of greenhouse roof types, including:

  • "triangle"
  • "half_circle"
  • "flat_arch"
  • "gothic_arch"
  • "sawtooth"
  • "sawtooth_arch"

We can define a list to include all these types:

roof_types = [
    "triangle",
    "half_circle",
    "flat_arch",
    "gothic_arch",
    "sawtooth",
    "sawtooth_arch",
]

4.3 Set Greenhouse Parameters

Before creating a greenhouse model, we need to set a series of parameters. Here are some key parameters and their descriptions:

wall_height = 6.5  # Wall height (meters)
wall_width = 4     # Width of each roof segment (meters)
wall_length = 1.67 # Length of the greenhouse (meters)
num_segments = 6   # Number of roof segments
slope = 22         # Roof slope angle (degrees)
number_length = 1*10  # Number of greenhouses in the length direction
number_width = 1*10   # Number of greenhouses in the width direction
time_step = 60     # Simulation time step (minutes)

4.4 Create Greenhouse Model

Use the GreenhouseGeometry class to create a greenhouse model. Here is a complete example showing how to create a model for each roof type:

for roof_type in roof_types:
    print(f"Creating greenhouse with {roof_type} roof")
    
    greenhouse_model = GreenhouseGeometry(
        roof_type=roof_type,
        slope=slope,
        wall_height=wall_height,
        wall_width=wall_width,
        wall_length=wall_length,
        num_segments=num_segments,
        time_step=time_step,
        number_width=number_width,
        number_length=number_length,
        max_indoor_temp=60,
        min_indoor_temp=0,
        max_outdoor_temp=60,
        min_outdoor_temp=0,
        max_delta_temp=1,
        max_wind_speed=30,
        start_month=4,
        start_day=1,
        end_month=4,
        end_day=7,
    )
    
    greenhouse_model.create_houses()

4.5 Parameter Descriptions

  • roof_type: Roof type
  • slope: Roof slope angle (degrees)
  • wall_height: Wall height (meters)
  • wall_width: Width of each roof segment (meters)
  • wall_length: Length of the greenhouse (meters)
  • num_segments: Number of roof segments
  • time_step: Simulation time step (minutes)
  • number_width: Number of greenhouses in the width direction
  • number_length: Number of greenhouses in the length direction
  • max_indoor_temp: Maximum indoor temperature (°C)
  • min_indoor_temp: Minimum indoor temperature (°C)
  • max_outdoor_temp: Maximum outdoor temperature (°C)
  • min_outdoor_temp: Minimum outdoor temperature (°C)
  • max_delta_temp: Maximum indoor-outdoor temperature difference (°C)
  • max_wind_speed: Maximum wind speed (meters/second)
  • start_month, start_day, end_month, end_day: Simulation time range

4.6 Notes

  1. Ensure all parameters are set within reasonable ranges to avoid generating unrealistic greenhouse models.
  2. The wall_length set to 1.67 meters might be the length of a single unit. The actual greenhouse length should be wall_length * number_length.
  3. The simulation time range (from April 1 to April 7) can be adjusted as needed.
  4. The create_houses() method will generate specific greenhouse geometry models based on the set parameters. Ensure all necessary parameters are correctly set before calling this method.

4.7 Extended Use

  • Modify parameters to create greenhouses of various scales and structures.
  • Integrate this code into GreenLight to study the impact of different greenhouse structures on crop growth, energy efficiency, and other factors.

By using this parametric modeling functionality, you can flexibly create and compare different types of greenhouse structures, providing valuable data support for optimizing greenhouse design.