-
Notifications
You must be signed in to change notification settings - Fork 0
/
data_keys.f08
112 lines (97 loc) · 5.87 KB
/
data_keys.f08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
!*---------------------------------------------------------------------------*!
! |
! | SWMM Engine: Storm Water Management Model
! | Website: https://ehsanmadadi.com
! | Copyright (C) 2018-2020 Ehsan Madadi-Kandjani
!-------------------------------------------------------------------------------
!License
! This file is part of SWMM Engine.
! SWMM Engine is free software: you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by
! the Free Software Foundation, either version 3 of the License, or
! (at your option) any later version.
! SWMM Engine is distributed in the hope that it will be useful, but WITHOUT
! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! for more details.
! You should have received a copy of the GNU General Public License
! along with SWMM Engine. If not, see <http://www.gnu.org/licenses/>.
!*---------------------------------------------------------------------------*!
!
! module data_keys
!
! Provides relationship between integers and keys used for different
! data types.
!
! For example, the elem2I(:,:) array has column ei_elem_type that provides
! the index to the element type for each element. The possible values are
! provided below as eChannel, ePipe, etc.
!
!==========================================================================
module data_keys
use globals
implicit none
! data types for elemI(:,ei_elem_type). faceI(:,e_type_u), faceI(:,e_type_d)
integer, parameter :: eChannel = 1 ! ID for an open channel element
integer, parameter :: ePipe = 2 ! ID for an pipe
integer, parameter :: eJunctionChannel = 3 ! ID for a junction
integer, parameter :: eJunctionPipe = 4 ! ID for a junction
integer, parameter :: eCulvert = 5 ! ID for a culvert in an open channel
integer, parameter :: ePump = 6 ! ID for a pump
integer, parameter :: eValve = 7 ! ID for a valve
integer, parameter :: eBCup = 8 ! ID for face upstream BC
integer, parameter :: eBCdn = 9 ! ID for face downstream BC
! data types for faceI(:,fi_type)
integer, parameter :: fChannel = eChannel ! ID for open channel on both sides
integer, parameter :: fPipe = ePipe ! ID for pipe on both sides
integer, parameter :: fMultiple = eJunctionChannel ! ID for moderation by separate up/dn element types
integer, parameter :: fBCup = eBCup ! ID for face upstream BC
integer, parameter :: fBCdn = eBCdn ! ID for face downstream BC
! date types for elemI(:,ei_geometry)
integer, parameter :: eRectangular = 1 ! ID for rectangular chanel
integer, parameter :: eParabolic = 2 ! ID for parabolic channel
integer, parameter :: eTrapezoidal = 3 ! ID for trapezoidal channel
integer, parameter :: eTriangle = 4 ! ID for trapezoidal channel
integer, parameter :: eWidthDepth = 5 ! ID for general geometry by data pairs
! data types for elemI(:,ei_roughness_type)
integer, parameter :: eManningsN = 1 ! ID for mannings n for roughness_type
integer, parameter :: eCD = 2 ! ID for using drag coefficient for roughness_type
! data types for faceI(:,jump_type)
integer, parameter :: jump_none = 0 ! ID for no jump
integer, parameter :: jump_downstream = 1 ! ID for jump in nominal downstream direction
integer, parameter :: jump_upstream = 2 ! ID for jump in nominal upstream direction
! data types for nodeI(:,ni_node_type)
integer, parameter :: nJ2 = 1 ! ID for junction with 2 links
integer, parameter :: nJm = 2 ! ID for junction with multiple links
integer, parameter :: nBCdn = 3 ! ID for downstream BC
integer, parameter :: nBCup = 4 ! iD for upstream BC
! data types for nodeI(:,ni_assigned) for assignment to faces and links
integer, parameter :: nUnassigned = nullvalueI
integer, parameter :: nAssigned = 1
integer, parameter :: nDeferred = -1
! data types for linkI(:,li_link_type)
! note that these must correspond to element types
integer, parameter :: lchannel = eChannel ! ID for link that is open channel
integer, parameter :: lpipe = ePipe ! ID for link that is pipe
! data types for linkI(:,li_geometry) (must corresponde with ei_geometry)
integer, parameter :: lRectangular = eRectangular ! ID for link that rectangular channel
integer, parameter :: lParabolic = eParabolic ! ID for parabolic channel
integer, parameter :: lTrapezoidal = eTrapezoidal ! ID for trapezoidal channel
integer, parameter :: lTriangle = eTriangle ! ID for triangle channel
integer, parameter :: lWidthDepth = eWidthDepth ! ID for general geometry by data pairs
! data types for linkII(:,li_roughness_type)
integer, parameter :: lManningsN = eManningsN ! ID for mannings n for roughness_type
integer, parameter :: lCD = eCD ! ID for using drag coefficient for roughness_type
! data types for linkI(:,li_assigned) for assignment to faces and links
integer, parameter :: lUnassigned = nullvalueI
integer, parameter :: lAssigned = 1
integer, parameter :: lDeferred = -1
! data types for bcdata
integer, parameter :: bc_updn_downstream = 1
integer, parameter :: bc_updn_upstream = 0
integer, parameter :: bc_category_elevation = 0
integer, parameter :: bc_category_inflowrate = 1
!==========================================================================
! END OF MODULE data_keys
!==========================================================================
end module data_keys