-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrepareTRJfile.R
72 lines (60 loc) · 2.58 KB
/
PrepareTRJfile.R
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
# This function converts the solutions of EP/PR model
# into trajectory files readable by GridWare
PrepareTRJfile <- function()
{
# Set the default bin number to maximum number of bins
PRbinNumber = GW_PRmax
EPbinNumber = GW_EPmax
# Generate trajectory file path
TrajectoryDir = file.path(GW_ProjectPath, GW_ProjectName, GW_ProjectName,
fsep = "/")
TrajectoryDir = file.path(TrajectoryDir, "trjs", fsep = "_")
## Create project directory (if it does not exist)
dir.create(file.path(TrajectoryDir), showWarnings = FALSE)
TrajectoryIdx = SampleIdx
TrajectoryFile = file.path("C", TrajectoryIdx, fsep = "")
TrajectoryFile = file.path(TrajectoryFile, "trj", fsep = ".")
TrajectoryFile = file.path(TrajectoryDir, TrajectoryFile, fsep = "/")
# sol is the solution obtained by solving the model
nDataPoints <- length(sol[,c("time")])
# Looping over EP/PR data
for (DataIdx in seq_along(sol[,1]))
{
t = sol[DataIdx,c("time")]
PR = sol[DataIdx,c("PR")]
EP = sol[DataIdx,c("EP")]
# Assigning new categories to PR and EP
PRbinNumber = .bincode(x = PR, breaks = GW_PR_binningThrlds,
right = FALSE, include.lowest = TRUE)
EPbinNumber = .bincode(x = EP, breaks = GW_EP_binningThrlds,
right = FALSE, include.lowest = TRUE)
# Writing the new categories as state variables to
# trajectory files
if (DataIdx == 1)
{
# Initializing the trajectory file
# by writing the first state
Previous_PRbinNumber = PRbinNumber
Previous_EPbinNumber = EPbinNumber
WriteTRJfiles(FilePath = TrajectoryFile, t = t,
PR = PRbinNumber, EP = EPbinNumber,
FirstLine = TRUE)
}
else
{
# Only write the new states
if (PRbinNumber != Previous_PRbinNumber
|| EPbinNumber != Previous_EPbinNumber)
{
# A state transition has occurred, so
# the new state should be written to file
WriteTRJfiles(FilePath = TrajectoryFile, t = t,
PR = PRbinNumber, EP = EPbinNumber)
Previous_PRbinNumber = PRbinNumber
Previous_EPbinNumber = EPbinNumber
}
}
}
# Write offset time to file
WriteTRJfiles(FilePath = TrajectoryFile, t = t, LastLine = TRUE)
}