You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

When adding boundary conditions to a model, you must first declare their type. In the example of this tutorial, we will add a time series of water levels to each boundary. Each of the added boundary conditions is also kept inside a separate variable for later use.

Creare timeseries boundaries
flowLeftBoundaryCondition = AddFlowBoundaryCondition(fmModel, leftBoundary.Name, FlowBoundaryQuantityType.WaterLevel, BoundaryConditionDataType.TimeSeries)
flowTopBoundaryCondition = AddFlowBoundaryCondition(fmModel, topBoundary.Name, FlowBoundaryQuantityType.WaterLevel, BoundaryConditionDataType.TimeSeries)
flowBottomBoundaryCondition = AddFlowBoundaryCondition(fmModel, bottomBoundary.Name, FlowBoundaryQuantityType.WaterLevel, BoundaryConditionDataType.TimeSeries)
flowRightBoundaryCondition = AddFlowBoundaryCondition(fmModel, rightBoundary.Name, FlowBoundaryQuantityType.WaterLevel, BoundaryConditionDataType.TimeSeries)

This is reflected in the map, with a different icon for the boundary conditions:

We continue by assigning the start time and the end time of each time series (the same values that will be used later on for the model simulation) and a list of [boundary, boundary condition] pairs.

Create timeseries
from datetime import datetime, time, timedelta

startTime = datetime(2014,1,1, 12,0,0)
endTime = datetime(2014,1,12, 12,0,0)

boundaryConditionSets = [[leftBoundary,flowLeftBoundaryCondition],
                        [topBoundary,flowTopBoundaryCondition],
                        [bottomBoundary, flowBottomBoundaryCondition],
                        [rightBoundary, flowRightBoundaryCondition]]

 

Now, we want to use a WPS server to get the timeseries for the support points of the boundaries. We start by importing the WPS library (this may take some time and ends with a warning (this can be ignored)).

Import WPS library
import Libraries.Wps as wps

 

We go through the list and call "GetTidalPredictForLineString" for every boundary from the wps library. This will give us a time series for every support point on the boundary with the provided start time, stop time and frequency. This may take some time depending on the number of support points, length of the time series and the speed of your internet connection.

We continue by adding the these time series to the model by using the "AddTimeSeriesToSupportPoint" call. This will add the time series to the provided boundary condition at the support point index.

Add WPS boundary conditions
for boundaryConditionSet in boundaryConditionSets:
    # get timeseries for each support point using wps service
    timeSeries = wps.GetTidalPredictForLineString(boundaryConditionSet[0].Geometry, EPSGCode, startTime, endTime, wps.Frequency.Hourly)

    # add resultTimeSeries to support points
    for supportPointIndex in range(len(timeSeries)):
        resultTimeSeries = timeSeries[supportPointIndex]
        AddTimeSeriesToSupportPoint(fmModel, boundaryConditionSet[1], supportPointIndex, resultTimeSeries)

 

The result can be viewed double clicking the boundary on the map and looking at the boundary conditions editor :

Here, you can see that for the left boundary there is a water level time series declared on all the support points.

 

 

  • No labels