TRACK-pylib 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyTRACK/__init__.py +4 -0
- pyTRACK/_lib/libtrack.so +0 -0
- pyTRACK/data/CMAP.1074 +46 -0
- pyTRACK/data/CMAP.dat.claire +16 -0
- pyTRACK/data/CMAP.dat.john +13458 -0
- pyTRACK/data/CMAP.dat.mask +3129 -0
- pyTRACK/data/CMAP.dat.mine +3001 -0
- pyTRACK/data/CMAP.dat.orig +3001 -0
- pyTRACK/data/adapt.dat +2 -0
- pyTRACK/data/constraints.dat +38 -0
- pyTRACK/data/constraints.dat.proto +38 -0
- pyTRACK/data/constraints.dat.reg +38 -0
- pyTRACK/data/constraints.dat.sphery +45 -0
- pyTRACK/data/gridT63.nc +0 -0
- pyTRACK/data/initial.T42_NH +19 -0
- pyTRACK/data/initial.T42_SH +19 -0
- pyTRACK/data/initial.T63_NH +19 -0
- pyTRACK/data/initial.T63_SH +19 -0
- pyTRACK/data/initial.st +16 -0
- pyTRACK/data/zone.dat +4 -0
- pyTRACK/data/zone.dat.new +10 -0
- pyTRACK/indat/RSPLICE.in +22 -0
- pyTRACK/indat/RSPLICE_GFS.in +20 -0
- pyTRACK/indat/RUNDATIN.GFS_MSLP.in +53 -0
- pyTRACK/indat/RUNDATIN.GFS_MSLP_A.in +54 -0
- pyTRACK/indat/RUNDATIN.GFS_VOR.in +53 -0
- pyTRACK/indat/RUNDATIN.GFS_VOR_A.in +54 -0
- pyTRACK/indat/RUNDATIN.era_MSLP.in +49 -0
- pyTRACK/indat/RUNDATIN.era_MSLP_A.in +50 -0
- pyTRACK/indat/RUNDATIN.era_VOR.in +50 -0
- pyTRACK/indat/RUNDATIN.era_VOR_A.in +51 -0
- pyTRACK/indat/SPACE_FILTER.in +38 -0
- pyTRACK/indat/STATS.era2_NH.in +110 -0
- pyTRACK/indat/STATS.era2_NH_wght.in +147 -0
- pyTRACK/indat/STATS.era2_SH.in +110 -0
- pyTRACK/indat/STATS.era2_SH_wght.in +143 -0
- pyTRACK/indat/calcvor_onelev.in +34 -0
- pyTRACK/indat/specfilt.in +31 -0
- pyTRACK/track.py +70 -0
- pyTRACK/track_master.py +245 -0
- pyTRACK/utils.py +425 -0
- track_pylib-0.1.0.dist-info/METADATA +28 -0
- track_pylib-0.1.0.dist-info/RECORD +45 -0
- track_pylib-0.1.0.dist-info/WHEEL +5 -0
- track_pylib-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
n
|
|
2
|
+
1
|
|
3
|
+
/users/nutis/kih/R_TRACK/data/initial
|
|
4
|
+
n
|
|
5
|
+
n
|
|
6
|
+
n
|
|
7
|
+
y
|
|
8
|
+
1.0e+5
|
|
9
|
+
n
|
|
10
|
+
1.0
|
|
11
|
+
1
|
|
12
|
+
n
|
|
13
|
+
0
|
|
14
|
+
n
|
|
15
|
+
2#
|
|
16
|
+
1
|
|
17
|
+
30!
|
|
18
|
+
e
|
|
19
|
+
2
|
|
20
|
+
7
|
|
21
|
+
n
|
|
22
|
+
0
|
|
23
|
+
n
|
|
24
|
+
n
|
|
25
|
+
n
|
|
26
|
+
0.
|
|
27
|
+
y
|
|
28
|
+
1
|
|
29
|
+
0
|
|
30
|
+
0.
|
|
31
|
+
y
|
|
32
|
+
d
|
|
33
|
+
n
|
|
34
|
+
n
|
|
35
|
+
0
|
|
36
|
+
n
|
|
37
|
+
0.2
|
|
38
|
+
0.8
|
|
39
|
+
y
|
|
40
|
+
y
|
|
41
|
+
6.
|
|
42
|
+
1.
|
|
43
|
+
n
|
|
44
|
+
n
|
|
45
|
+
n
|
|
46
|
+
y
|
|
47
|
+
y
|
|
48
|
+
y
|
|
49
|
+
0
|
|
50
|
+
0
|
|
51
|
+
n
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/users/nutis/kih/DISK2/ERA_UTF/RAW/THETA/vor.dat
|
|
2
|
+
n
|
|
3
|
+
0
|
|
4
|
+
0
|
|
5
|
+
y
|
|
6
|
+
n
|
|
7
|
+
n
|
|
8
|
+
g
|
|
9
|
+
n
|
|
10
|
+
1
|
|
11
|
+
128
|
|
12
|
+
1
|
|
13
|
+
64
|
|
14
|
+
y
|
|
15
|
+
4
|
|
16
|
+
1
|
|
17
|
+
1
|
|
18
|
+
100000
|
|
19
|
+
0
|
|
20
|
+
42
|
|
21
|
+
0
|
|
22
|
+
y
|
|
23
|
+
1
|
|
24
|
+
2
|
|
25
|
+
0
|
|
26
|
+
5
|
|
27
|
+
50
|
|
28
|
+
1
|
|
29
|
+
1
|
|
30
|
+
y
|
|
31
|
+
0.1
|
|
32
|
+
n
|
|
33
|
+
y
|
|
34
|
+
y
|
|
35
|
+
370
|
|
36
|
+
370
|
|
37
|
+
y
|
|
38
|
+
ERA_T42_128_64
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/users/nutis/kih/T_TRACK/indat/gridT42.utf
|
|
2
|
+
n
|
|
3
|
+
1
|
|
4
|
+
/users/nutis/kih/T_TRACK/data/initial.stat
|
|
5
|
+
y
|
|
6
|
+
1
|
|
7
|
+
y
|
|
8
|
+
tr_trs
|
|
9
|
+
1
|
|
10
|
+
1000000000
|
|
11
|
+
n
|
|
12
|
+
n
|
|
13
|
+
n
|
|
14
|
+
n
|
|
15
|
+
n
|
|
16
|
+
n
|
|
17
|
+
2
|
|
18
|
+
1
|
|
19
|
+
100000
|
|
20
|
+
1
|
|
21
|
+
n
|
|
22
|
+
6.
|
|
23
|
+
y
|
|
24
|
+
1
|
|
25
|
+
n
|
|
26
|
+
1
|
|
27
|
+
y
|
|
28
|
+
1
|
|
29
|
+
s
|
|
30
|
+
2
|
|
31
|
+
90.
|
|
32
|
+
0.
|
|
33
|
+
1
|
|
34
|
+
129
|
|
35
|
+
1
|
|
36
|
+
64
|
|
37
|
+
100
|
|
38
|
+
100
|
|
39
|
+
-1.951718
|
|
40
|
+
1.951718
|
|
41
|
+
-1.951718
|
|
42
|
+
1.951718
|
|
43
|
+
3000
|
|
44
|
+
0.0
|
|
45
|
+
360.0
|
|
46
|
+
0.0
|
|
47
|
+
90.0
|
|
48
|
+
0.25
|
|
49
|
+
s
|
|
50
|
+
2
|
|
51
|
+
3
|
|
52
|
+
400.
|
|
53
|
+
0.1
|
|
54
|
+
n
|
|
55
|
+
0.5
|
|
56
|
+
n
|
|
57
|
+
1
|
|
58
|
+
s
|
|
59
|
+
2
|
|
60
|
+
3
|
|
61
|
+
400.
|
|
62
|
+
0.1
|
|
63
|
+
n
|
|
64
|
+
0.5
|
|
65
|
+
n
|
|
66
|
+
1
|
|
67
|
+
s
|
|
68
|
+
2
|
|
69
|
+
3
|
|
70
|
+
400.
|
|
71
|
+
0.1
|
|
72
|
+
n
|
|
73
|
+
0.5
|
|
74
|
+
n
|
|
75
|
+
0
|
|
76
|
+
2
|
|
77
|
+
3
|
|
78
|
+
400.
|
|
79
|
+
0.1
|
|
80
|
+
n
|
|
81
|
+
0.5
|
|
82
|
+
n
|
|
83
|
+
0
|
|
84
|
+
2
|
|
85
|
+
3
|
|
86
|
+
150.
|
|
87
|
+
0.1
|
|
88
|
+
0.5
|
|
89
|
+
n
|
|
90
|
+
2
|
|
91
|
+
3
|
|
92
|
+
150.
|
|
93
|
+
0.1
|
|
94
|
+
0.5
|
|
95
|
+
n
|
|
96
|
+
y
|
|
97
|
+
2
|
|
98
|
+
3
|
|
99
|
+
200.
|
|
100
|
+
0.1
|
|
101
|
+
0.5
|
|
102
|
+
n
|
|
103
|
+
0
|
|
104
|
+
y
|
|
105
|
+
y
|
|
106
|
+
0.023909410
|
|
107
|
+
n
|
|
108
|
+
0
|
|
109
|
+
|
|
110
|
+
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/users/kih/TRACK-hg-working/indat/gridT42.utf
|
|
2
|
+
n
|
|
3
|
+
0
|
|
4
|
+
2
|
|
5
|
+
0.001
|
|
6
|
+
n
|
|
7
|
+
y
|
|
8
|
+
g
|
|
9
|
+
n
|
|
10
|
+
1
|
|
11
|
+
128
|
|
12
|
+
1
|
|
13
|
+
64
|
|
14
|
+
y
|
|
15
|
+
1
|
|
16
|
+
y
|
|
17
|
+
y
|
|
18
|
+
tr_trs
|
|
19
|
+
s
|
|
20
|
+
1
|
|
21
|
+
1000000000
|
|
22
|
+
n
|
|
23
|
+
n
|
|
24
|
+
n
|
|
25
|
+
n
|
|
26
|
+
a
|
|
27
|
+
n
|
|
28
|
+
n
|
|
29
|
+
n
|
|
30
|
+
2
|
|
31
|
+
1
|
|
32
|
+
100000
|
|
33
|
+
0
|
|
34
|
+
1
|
|
35
|
+
n
|
|
36
|
+
6.
|
|
37
|
+
y
|
|
38
|
+
1
|
|
39
|
+
n
|
|
40
|
+
1
|
|
41
|
+
y
|
|
42
|
+
1
|
|
43
|
+
0
|
|
44
|
+
s
|
|
45
|
+
2
|
|
46
|
+
90.
|
|
47
|
+
0.
|
|
48
|
+
1
|
|
49
|
+
129
|
|
50
|
+
1
|
|
51
|
+
64
|
|
52
|
+
0
|
|
53
|
+
100
|
|
54
|
+
100
|
|
55
|
+
-1.951718
|
|
56
|
+
1.951718
|
|
57
|
+
-1.951718
|
|
58
|
+
1.951718
|
|
59
|
+
5000
|
|
60
|
+
0.0
|
|
61
|
+
360.0
|
|
62
|
+
0.0
|
|
63
|
+
90.0
|
|
64
|
+
y
|
|
65
|
+
0.005
|
|
66
|
+
0.25
|
|
67
|
+
0
|
|
68
|
+
a
|
|
69
|
+
1
|
|
70
|
+
0
|
|
71
|
+
5
|
|
72
|
+
s
|
|
73
|
+
n
|
|
74
|
+
1
|
|
75
|
+
y
|
|
76
|
+
3
|
|
77
|
+
400.
|
|
78
|
+
0.1
|
|
79
|
+
n
|
|
80
|
+
0.5
|
|
81
|
+
n
|
|
82
|
+
1
|
|
83
|
+
s
|
|
84
|
+
n
|
|
85
|
+
1
|
|
86
|
+
n
|
|
87
|
+
3
|
|
88
|
+
400.
|
|
89
|
+
0.1
|
|
90
|
+
n
|
|
91
|
+
0.5
|
|
92
|
+
n
|
|
93
|
+
1
|
|
94
|
+
s
|
|
95
|
+
n
|
|
96
|
+
1
|
|
97
|
+
n
|
|
98
|
+
3
|
|
99
|
+
400.
|
|
100
|
+
0.1
|
|
101
|
+
n
|
|
102
|
+
0.5
|
|
103
|
+
n
|
|
104
|
+
0
|
|
105
|
+
n
|
|
106
|
+
1
|
|
107
|
+
n
|
|
108
|
+
3
|
|
109
|
+
400.
|
|
110
|
+
0.1
|
|
111
|
+
n
|
|
112
|
+
0.5
|
|
113
|
+
n
|
|
114
|
+
0
|
|
115
|
+
n
|
|
116
|
+
1
|
|
117
|
+
n
|
|
118
|
+
3
|
|
119
|
+
150.
|
|
120
|
+
0.1
|
|
121
|
+
0.5
|
|
122
|
+
n
|
|
123
|
+
n
|
|
124
|
+
1
|
|
125
|
+
n
|
|
126
|
+
3
|
|
127
|
+
150.
|
|
128
|
+
0.1
|
|
129
|
+
0.5
|
|
130
|
+
n
|
|
131
|
+
y
|
|
132
|
+
n
|
|
133
|
+
1
|
|
134
|
+
n
|
|
135
|
+
3
|
|
136
|
+
200.
|
|
137
|
+
0.1
|
|
138
|
+
0.5
|
|
139
|
+
n
|
|
140
|
+
0
|
|
141
|
+
y
|
|
142
|
+
y
|
|
143
|
+
0.023909410
|
|
144
|
+
n
|
|
145
|
+
0
|
|
146
|
+
|
|
147
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/users/nutis/kih/T_TRACK/indat/gridT42.utf
|
|
2
|
+
n
|
|
3
|
+
1
|
|
4
|
+
/users/nutis/kih/T_TRACK/data/initial.stat
|
|
5
|
+
y
|
|
6
|
+
1
|
|
7
|
+
y
|
|
8
|
+
tr_trs
|
|
9
|
+
1
|
|
10
|
+
1000000000
|
|
11
|
+
n
|
|
12
|
+
n
|
|
13
|
+
n
|
|
14
|
+
n
|
|
15
|
+
n
|
|
16
|
+
n
|
|
17
|
+
2
|
|
18
|
+
1
|
|
19
|
+
100000
|
|
20
|
+
1
|
|
21
|
+
n
|
|
22
|
+
6.
|
|
23
|
+
y
|
|
24
|
+
1
|
|
25
|
+
n
|
|
26
|
+
1
|
|
27
|
+
y
|
|
28
|
+
1
|
|
29
|
+
s
|
|
30
|
+
2
|
|
31
|
+
-90.
|
|
32
|
+
0.
|
|
33
|
+
1
|
|
34
|
+
129
|
|
35
|
+
1
|
|
36
|
+
64
|
|
37
|
+
100
|
|
38
|
+
100
|
|
39
|
+
-1.951718
|
|
40
|
+
1.951718
|
|
41
|
+
-1.951718
|
|
42
|
+
1.951718
|
|
43
|
+
3000
|
|
44
|
+
0.0
|
|
45
|
+
360.0
|
|
46
|
+
-90.0
|
|
47
|
+
0.0
|
|
48
|
+
0.25
|
|
49
|
+
s
|
|
50
|
+
2
|
|
51
|
+
3
|
|
52
|
+
400.
|
|
53
|
+
0.1
|
|
54
|
+
n
|
|
55
|
+
0.5
|
|
56
|
+
n
|
|
57
|
+
1
|
|
58
|
+
s
|
|
59
|
+
2
|
|
60
|
+
3
|
|
61
|
+
400.
|
|
62
|
+
0.1
|
|
63
|
+
n
|
|
64
|
+
0.5
|
|
65
|
+
n
|
|
66
|
+
1
|
|
67
|
+
s
|
|
68
|
+
2
|
|
69
|
+
3
|
|
70
|
+
400.
|
|
71
|
+
0.1
|
|
72
|
+
n
|
|
73
|
+
0.5
|
|
74
|
+
n
|
|
75
|
+
0
|
|
76
|
+
2
|
|
77
|
+
3
|
|
78
|
+
400.
|
|
79
|
+
0.1
|
|
80
|
+
n
|
|
81
|
+
0.5
|
|
82
|
+
n
|
|
83
|
+
0
|
|
84
|
+
2
|
|
85
|
+
3
|
|
86
|
+
150.
|
|
87
|
+
0.1
|
|
88
|
+
0.5
|
|
89
|
+
n
|
|
90
|
+
2
|
|
91
|
+
3
|
|
92
|
+
150.
|
|
93
|
+
0.1
|
|
94
|
+
0.5
|
|
95
|
+
n
|
|
96
|
+
y
|
|
97
|
+
2
|
|
98
|
+
3
|
|
99
|
+
200.
|
|
100
|
+
0.1
|
|
101
|
+
0.5
|
|
102
|
+
n
|
|
103
|
+
0
|
|
104
|
+
y
|
|
105
|
+
y
|
|
106
|
+
0.023909410
|
|
107
|
+
n
|
|
108
|
+
0
|
|
109
|
+
|
|
110
|
+
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/users/kih/TRACK-hg-working/indat/gridT42.utf
|
|
2
|
+
n
|
|
3
|
+
0
|
|
4
|
+
2
|
|
5
|
+
0.001
|
|
6
|
+
n
|
|
7
|
+
y
|
|
8
|
+
g
|
|
9
|
+
n
|
|
10
|
+
1
|
|
11
|
+
129
|
|
12
|
+
1
|
|
13
|
+
64
|
|
14
|
+
y
|
|
15
|
+
1
|
|
16
|
+
y
|
|
17
|
+
y
|
|
18
|
+
tr_trs
|
|
19
|
+
s
|
|
20
|
+
1
|
|
21
|
+
1000000000
|
|
22
|
+
n
|
|
23
|
+
n
|
|
24
|
+
n
|
|
25
|
+
n
|
|
26
|
+
a
|
|
27
|
+
n
|
|
28
|
+
n
|
|
29
|
+
n
|
|
30
|
+
2
|
|
31
|
+
1
|
|
32
|
+
100000
|
|
33
|
+
0
|
|
34
|
+
1
|
|
35
|
+
n
|
|
36
|
+
6.
|
|
37
|
+
y
|
|
38
|
+
1
|
|
39
|
+
n
|
|
40
|
+
1
|
|
41
|
+
y
|
|
42
|
+
1
|
|
43
|
+
0
|
|
44
|
+
s
|
|
45
|
+
2
|
|
46
|
+
-90.
|
|
47
|
+
0.
|
|
48
|
+
1
|
|
49
|
+
129
|
|
50
|
+
1
|
|
51
|
+
64
|
|
52
|
+
0
|
|
53
|
+
100
|
|
54
|
+
100
|
|
55
|
+
-1.951718 1.951878
|
|
56
|
+
-1.951718 1.951878
|
|
57
|
+
5000
|
|
58
|
+
0.0
|
|
59
|
+
360.0
|
|
60
|
+
-90.0
|
|
61
|
+
0.0
|
|
62
|
+
y
|
|
63
|
+
0.005
|
|
64
|
+
0.25
|
|
65
|
+
0
|
|
66
|
+
a
|
|
67
|
+
1
|
|
68
|
+
0
|
|
69
|
+
5
|
|
70
|
+
s
|
|
71
|
+
n
|
|
72
|
+
1
|
|
73
|
+
n
|
|
74
|
+
3
|
|
75
|
+
400.
|
|
76
|
+
0.1
|
|
77
|
+
n
|
|
78
|
+
0.5
|
|
79
|
+
n
|
|
80
|
+
1
|
|
81
|
+
s
|
|
82
|
+
n
|
|
83
|
+
1
|
|
84
|
+
n
|
|
85
|
+
3
|
|
86
|
+
400.
|
|
87
|
+
0.1
|
|
88
|
+
n
|
|
89
|
+
0.5
|
|
90
|
+
n
|
|
91
|
+
1
|
|
92
|
+
s
|
|
93
|
+
n
|
|
94
|
+
1
|
|
95
|
+
n
|
|
96
|
+
3
|
|
97
|
+
400.
|
|
98
|
+
0.1
|
|
99
|
+
n
|
|
100
|
+
0.5
|
|
101
|
+
n
|
|
102
|
+
0
|
|
103
|
+
n
|
|
104
|
+
1
|
|
105
|
+
n
|
|
106
|
+
3
|
|
107
|
+
400.
|
|
108
|
+
0.1
|
|
109
|
+
n
|
|
110
|
+
0.5
|
|
111
|
+
n
|
|
112
|
+
0
|
|
113
|
+
n
|
|
114
|
+
1
|
|
115
|
+
n
|
|
116
|
+
3
|
|
117
|
+
150.
|
|
118
|
+
0.1
|
|
119
|
+
0.5
|
|
120
|
+
n
|
|
121
|
+
n
|
|
122
|
+
1
|
|
123
|
+
n
|
|
124
|
+
3
|
|
125
|
+
150.
|
|
126
|
+
0.1
|
|
127
|
+
0.5
|
|
128
|
+
n
|
|
129
|
+
y
|
|
130
|
+
n
|
|
131
|
+
1
|
|
132
|
+
n
|
|
133
|
+
3
|
|
134
|
+
200.
|
|
135
|
+
0.1
|
|
136
|
+
0.5
|
|
137
|
+
n
|
|
138
|
+
0
|
|
139
|
+
y
|
|
140
|
+
y
|
|
141
|
+
0.023909410
|
|
142
|
+
n
|
|
143
|
+
0
|
pyTRACK/track.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
def set_track_env():
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
pkgpath=os.path.dirname(__file__)
|
|
5
|
+
curr=os.getcwd()
|
|
6
|
+
os.environ["DATCM"] = pkgpath
|
|
7
|
+
os.environ["SPECTRAL"] = os.path.join(curr, "specfilt")
|
|
8
|
+
os.environ["FINIT"] = os.path.join(curr, "month.nc")
|
|
9
|
+
|
|
10
|
+
def track(input_file="input.nc", namelist=None):
|
|
11
|
+
"""
|
|
12
|
+
Run TRACK.
|
|
13
|
+
|
|
14
|
+
Parameters
|
|
15
|
+
----------
|
|
16
|
+
input_file : str
|
|
17
|
+
Name of the input file (passed with -i).
|
|
18
|
+
namelist : str or None
|
|
19
|
+
Path to the namelist file to feed to stdin.
|
|
20
|
+
If None, runs TRACK normally without stdin redirection.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import os
|
|
24
|
+
import ctypes
|
|
25
|
+
|
|
26
|
+
# Path to shared library
|
|
27
|
+
_LIB = os.path.join(os.path.dirname(__file__), "_lib", "libtrack.so")
|
|
28
|
+
|
|
29
|
+
if not os.path.exists(_LIB):
|
|
30
|
+
raise FileNotFoundError(f"libtrack.so not found at {_LIB}")
|
|
31
|
+
|
|
32
|
+
lib = ctypes.CDLL(_LIB)
|
|
33
|
+
|
|
34
|
+
# Define function signature
|
|
35
|
+
lib.track_main.argtypes = [
|
|
36
|
+
ctypes.c_int,
|
|
37
|
+
ctypes.POINTER(ctypes.c_char_p)
|
|
38
|
+
]
|
|
39
|
+
lib.track_main.restype = ctypes.c_int
|
|
40
|
+
|
|
41
|
+
pkgpath = os.path.dirname(__file__)
|
|
42
|
+
|
|
43
|
+
args = [
|
|
44
|
+
b"track",
|
|
45
|
+
b"-i", input_file.encode("utf-8"),
|
|
46
|
+
b"-f", b"year",
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
argc = len(args)
|
|
50
|
+
argv = (ctypes.c_char_p * argc)(*args)
|
|
51
|
+
|
|
52
|
+
set_track_env()
|
|
53
|
+
|
|
54
|
+
if namelist is not None:
|
|
55
|
+
# If a namelist is provided, redirect stdin
|
|
56
|
+
if not os.path.exists(namelist):
|
|
57
|
+
raise FileNotFoundError(f"Namelist not found: {namelist}")
|
|
58
|
+
|
|
59
|
+
import os
|
|
60
|
+
old_stdin_fd = os.dup(0)
|
|
61
|
+
try:
|
|
62
|
+
with open(namelist, "rb") as f:
|
|
63
|
+
os.dup2(f.fileno(), 0) # redirect stdin
|
|
64
|
+
lib.track_main(argc, argv)
|
|
65
|
+
finally:
|
|
66
|
+
os.dup2(old_stdin_fd, 0) # restore stdin
|
|
67
|
+
os.close(old_stdin_fd)
|
|
68
|
+
else:
|
|
69
|
+
# No namelist, call normally
|
|
70
|
+
lib.track_main(argc, argv)
|