Skip to content

Commit fc3e36c

Browse files
authored
Merge pull request #19 from epn09/temp_file
Use NamedTemporaryFile instead of .inTer1, 2, 3
2 parents 9c9a0dd + 195c495 commit fc3e36c

File tree

2 files changed

+128
-101
lines changed

2 files changed

+128
-101
lines changed

src/fortran/KreatE_inter_m_f.f90

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function crear_int0(NX,NY,STARTLAT,STARTLON,DELTALAT,DELTALON,int1,fci,int2,int3
77
integer, parameter :: OUNIT = 11
88

99
integer :: NVARS
10-
character(len=200) :: NS
10+
character(len=*) :: NS
1111

1212

1313
integer :: VERSION = 5
@@ -18,18 +18,18 @@ function crear_int0(NX,NY,STARTLAT,STARTLON,DELTALAT,DELTALON,int1,fci,int2,int3
1818
character(len=8) :: STARTLOC = 'SWCORNER'
1919

2020
character(len=9) :: FIELD
21-
character(len=10) :: int1
21+
character(len=*) :: int1
2222
character(len=9), dimension(NVARS) :: fint
2323

2424
character(len=24) :: fci
2525

2626

2727
character(len=25) :: UNITS
28-
character(len=10) :: int2
28+
character(len=*) :: int2
2929
character(len=25), dimension(NVARS) :: funt
3030

3131
character(len=46) :: DESC
32-
character(len=10) :: int3
32+
character(len=*) :: int3
3333
character(len=46), dimension(NVARS) :: fdes
3434

3535
character(len=32):: MAP_SOURCE = 'PYWINTER'
@@ -104,7 +104,7 @@ function crear_int1(NX,NY,STARTLAT,STARTLON,DX,DY,TRUELAT1,int1,fci,int2,int3,fl
104104
integer, parameter :: OUNIT = 11
105105

106106
integer :: NVARS
107-
character(len=200) :: NS
107+
character(len=*) :: NS
108108

109109

110110
integer :: VERSION = 5
@@ -115,18 +115,18 @@ function crear_int1(NX,NY,STARTLAT,STARTLON,DX,DY,TRUELAT1,int1,fci,int2,int3,fl
115115
character(len=8) :: STARTLOC = 'SWCORNER'
116116

117117
character(len=9) :: FIELD
118-
character(len=10) :: int1
118+
character(len=*) :: int1
119119
character(len=9), dimension(NVARS) :: fint
120120

121121
character(len=24) :: fci
122122

123123

124124
character(len=25) :: UNITS
125-
character(len=10) :: int2
125+
character(len=*) :: int2
126126
character(len=25), dimension(NVARS) :: funt
127127

128128
character(len=46) :: DESC
129-
character(len=10) :: int3
129+
character(len=*) :: int3
130130
character(len=46), dimension(NVARS) :: fdes
131131

132132
character(len=32):: MAP_SOURCE = 'PYWINTER'
@@ -201,7 +201,7 @@ function crear_int3(NX,NY,STARTLAT,STARTLON,DX,DY,XLONC,TRUELAT1,TRUELAT2,iswin,
201201
integer, parameter :: OUNIT = 11
202202

203203
integer :: NVARS
204-
character(len=200) :: NS
204+
character(len=*) :: NS
205205

206206

207207
integer :: VERSION = 5
@@ -212,18 +212,18 @@ function crear_int3(NX,NY,STARTLAT,STARTLON,DX,DY,XLONC,TRUELAT1,TRUELAT2,iswin,
212212
character(len=8) :: STARTLOC = 'SWCORNER'
213213

214214
character(len=9) :: FIELD
215-
character(len=10) :: int1
215+
character(len=*) :: int1
216216
character(len=9), dimension(NVARS) :: fint
217217

218218
character(len=24) :: fci
219219

220220

221221
character(len=25) :: UNITS
222-
character(len=10) :: int2
222+
character(len=*) :: int2
223223
character(len=25), dimension(NVARS) :: funt
224224

225225
character(len=46) :: DESC
226-
character(len=10) :: int3
226+
character(len=*) :: int3
227227
character(len=46), dimension(NVARS) :: fdes
228228

229229
character(len=32):: MAP_SOURCE = 'PYWINTER'
@@ -301,7 +301,7 @@ function crear_int4(NX,NY,STARTLAT,STARTLON,NLATS,DELTALON,iswin,int1,fci,int2,i
301301
integer, parameter :: OUNIT = 11
302302

303303
integer :: NVARS
304-
character(len=200) :: NS
304+
character(len=*) :: NS
305305

306306

307307
integer :: VERSION = 5
@@ -312,18 +312,18 @@ function crear_int4(NX,NY,STARTLAT,STARTLON,NLATS,DELTALON,iswin,int1,fci,int2,i
312312
character(len=8) :: STARTLOC = 'SWCORNER'
313313

314314
character(len=9) :: FIELD
315-
character(len=10) :: int1
315+
character(len=*) :: int1
316316
character(len=9), dimension(NVARS) :: fint
317317

318318
character(len=24) :: fci
319319

320320

321321
character(len=25) :: UNITS
322-
character(len=10) :: int2
322+
character(len=*) :: int2
323323
character(len=25), dimension(NVARS) :: funt
324324

325325
character(len=46) :: DESC
326-
character(len=10) :: int3
326+
character(len=*) :: int3
327327
character(len=46), dimension(NVARS) :: fdes
328328

329329
character(len=32):: MAP_SOURCE = 'PYWINTER'
@@ -398,7 +398,7 @@ function crear_int5(NX,NY,STARTLAT,STARTLON,DX,DY,XLONC,TRUELAT1,iswin,int1,fci,
398398
integer, parameter :: OUNIT = 11
399399

400400
integer :: NVARS
401-
character(len=200) :: NS
401+
character(len=*) :: NS
402402

403403

404404
integer :: VERSION = 5
@@ -409,18 +409,18 @@ function crear_int5(NX,NY,STARTLAT,STARTLON,DX,DY,XLONC,TRUELAT1,iswin,int1,fci,
409409
character(len=8) :: STARTLOC = 'SWCORNER'
410410

411411
character(len=9) :: FIELD
412-
character(len=10) :: int1
412+
character(len=*) :: int1
413413
character(len=9), dimension(NVARS) :: fint
414414

415415
character(len=24) :: fci
416416

417417

418418
character(len=25) :: UNITS
419-
character(len=10) :: int2
419+
character(len=*) :: int2
420420
character(len=25), dimension(NVARS) :: funt
421421

422422
character(len=46) :: DESC
423-
character(len=10) :: int3
423+
character(len=*) :: int3
424424
character(len=46), dimension(NVARS) :: fdes
425425

426426
character(len=32):: MAP_SOURCE = 'PYWINTER'
@@ -485,4 +485,4 @@ function crear_int5(NX,NY,STARTLAT,STARTLON,DX,DY,XLONC,TRUELAT1,iswin,int1,fci,
485485
close(2)
486486
close(3)
487487

488-
end function crear_int5
488+
end function crear_int5

src/pywinter/winter.py

Lines changed: 107 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22
import os
33
from struct import unpack
4+
from tempfile import NamedTemporaryFile
45
import pywinter.KreatE_inter_m_f as creattee_inter
56

67

@@ -154,91 +155,117 @@ def create_intermf(self):
154155

155156
va = self.megamat
156157

157-
file1 = open(".inTer1", "w")
158-
file2 = open(".inTer2", "w")
159-
file3 = open(".inTer3", "w")
160-
161-
for h in range(len(fnt)):
162-
if h == len(fnt) - 1:
163-
file1.write(fnt[h])
164-
file2.write(fun[h])
165-
file3.write(fds[h])
166-
else:
167-
file1.write(fnt[h] + os.linesep)
168-
file2.write(fun[h] + os.linesep)
169-
file3.write(fds[h] + os.linesep)
170-
171-
file1.close()
172-
file2.close()
173-
file3.close()
174-
175-
fnt = ".inTer1"
176-
fun = ".inTer2"
177-
fds = ".inTer3"
178-
179-
if isinstance(self.geos, Geo00):
180-
creattee_inter.crear_int0(
181-
startlat, startlon, deltalat, deltalon, fnt, fci, fun, fds, flv, ns, va
182-
)
158+
with (
159+
NamedTemporaryFile("w", delete=False) as file1,
160+
NamedTemporaryFile("w", delete=False) as file2,
161+
NamedTemporaryFile("w", delete=False) as file3,
162+
):
163+
for h in range(len(fnt)):
164+
if h == len(fnt) - 1:
165+
file1.write(fnt[h])
166+
file2.write(fun[h])
167+
file3.write(fds[h])
168+
else:
169+
file1.write(fnt[h] + os.linesep)
170+
file2.write(fun[h] + os.linesep)
171+
file3.write(fds[h] + os.linesep)
172+
173+
file1.close()
174+
file2.close()
175+
file3.close()
176+
177+
fnt = file1.name
178+
fun = file2.name
179+
fds = file3.name
180+
181+
if isinstance(self.geos, Geo00):
182+
creattee_inter.crear_int0(
183+
startlat,
184+
startlon,
185+
deltalat,
186+
deltalon,
187+
fnt,
188+
fci,
189+
fun,
190+
fds,
191+
flv,
192+
ns,
193+
va,
194+
)
183195

184-
elif isinstance(self.geos, Geo01):
185-
creattee_inter.crear_int1(
186-
startlat, startlon, dx, dy, tlat1, fnt, fci, fun, fds, flv, ns, va
187-
)
196+
elif isinstance(self.geos, Geo01):
197+
creattee_inter.crear_int1(
198+
startlat,
199+
startlon,
200+
dx,
201+
dy,
202+
tlat1,
203+
fnt,
204+
fci,
205+
fun,
206+
fds,
207+
flv,
208+
ns,
209+
va,
210+
)
188211

189-
elif isinstance(self.geos, Geo03):
190-
creattee_inter.crear_int3(
191-
startlat,
192-
startlon,
193-
dx,
194-
dy,
195-
xlonc,
196-
tlat1,
197-
tlat2,
198-
iswin,
199-
fnt,
200-
fci,
201-
fun,
202-
fds,
203-
flv,
204-
ns,
205-
va,
206-
)
212+
elif isinstance(self.geos, Geo03):
213+
creattee_inter.crear_int3(
214+
startlat,
215+
startlon,
216+
dx,
217+
dy,
218+
xlonc,
219+
tlat1,
220+
tlat2,
221+
iswin,
222+
fnt,
223+
fci,
224+
fun,
225+
fds,
226+
flv,
227+
ns,
228+
va,
229+
)
207230

208-
elif isinstance(self.geos, Geo04):
209-
creattee_inter.crear_int4(
210-
startlat,
211-
startlon,
212-
nlats,
213-
deltalon,
214-
iswin,
215-
fnt,
216-
fci,
217-
fun,
218-
fds,
219-
flv,
220-
ns,
221-
va,
222-
)
231+
elif isinstance(self.geos, Geo04):
232+
creattee_inter.crear_int4(
233+
startlat,
234+
startlon,
235+
nlats,
236+
deltalon,
237+
iswin,
238+
fnt,
239+
fci,
240+
fun,
241+
fds,
242+
flv,
243+
ns,
244+
va,
245+
)
223246

224-
elif isinstance(self.geos, Geo05):
225-
creattee_inter.crear_int5(
226-
startlat,
227-
startlon,
228-
dx,
229-
dy,
230-
xlonc,
231-
tlat1,
232-
iswin,
233-
fnt,
234-
fci,
235-
fun,
236-
fds,
237-
flv,
238-
ns,
239-
va,
240-
)
247+
elif isinstance(self.geos, Geo05):
248+
creattee_inter.crear_int5(
249+
startlat,
250+
startlon,
251+
dx,
252+
dy,
253+
xlonc,
254+
tlat1,
255+
iswin,
256+
fnt,
257+
fci,
258+
fun,
259+
fds,
260+
flv,
261+
ns,
262+
va,
263+
)
241264

265+
os.remove(fnt)
266+
os.remove(fun)
267+
os.remove(fds)
268+
242269
print(fname + ":" + hdate)
243270

244271

0 commit comments

Comments
 (0)