Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
scrollbar |
---|
When adding boundary conditions to the a model, you must first declare the type of the boundary you want to add. This is done as follows for a waterlevel timeseries: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.
Code Block | ||||
---|---|---|---|---|
| ||||
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 can now been seen on the map on top of the boundary is reflected in the map, with a different icon for the boundary conditions:
We continue by declaring assigning the start time and the end time of our timeseries (and model later on) and a list of [boundary, boundary condition] pairseach series. These same times will be used later on for the model as well as start and end simulation time. Additionally, a list containing the set of couples of boundary objects,and their respective specifications is also created.
Code Block | ||
---|---|---|
| ||
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 will use a WPS server to get retrieve the timeseries time series for the support points of the boundaries. We start by importing the WPS library (this . This may take some time and ends with a warning (this up with some error messages which can be ignored)).
Code Block | ||||
---|---|---|---|---|
| ||||
import Libraries.Wps as wps |
We go through the previously created list boundaryConditionSets and, for each pair, we call "GetTidalPredictForLineString" for to retrieve every boundary from the wps library WPS server. This will give provide us a timeseries time series for every each support point on the each boundary, with the provided start time, stop time and frequency. This may take some time depending on the number of support points, the length of the timeseries time series and the speed of your internet connection.
We continue by adding the these timeseries Once retrieved, we add these time series to the model by using the "AddTimeSeriesToSupportPoint" call. This will add the timeseries to the provided boundary condition at the support point indexusing AddTimeSeriesToSupportPoint for each support point.
Code Block | ||||
---|---|---|---|---|
| ||||
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 any boundary on the map and looking at the boundary conditions editor:
Here you can see that for the left boundary there is a waterlevel timeseries declared on In the figure above, a water level time series has been assigned to all the support points of the left boundary condition.
scrollbar |
---|