Skip to content

Commit 450f6be

Browse files
committed
Merge branch 'fieldsIO' into neuralpint
2 parents f493d63 + 8ee8815 commit 450f6be

File tree

2 files changed

+43
-43
lines changed

2 files changed

+43
-43
lines changed

pySDC/helpers/fieldsIO.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
>>> # Write some fields in files
2121
>>> x = np.linspace(0, 1, 101)
2222
>>> fOut = Cart2D(np.float64, "file.pysdc")
23-
>>> fOut.setHeader(nVar=2, gridX=x)
23+
>>> fOut.setHeader(nVar=2, coordX=x)
2424
>>> fOut.initialize()
2525
>>> times = [0, 1, 2]
2626
>>> u0 = np.array([-1, 1])[:, None]*x[None, :]
@@ -365,29 +365,29 @@ class Cart1D(Scal0D):
365365
# -------------------------------------------------------------------------
366366
# Overriden methods
367367
# -------------------------------------------------------------------------
368-
def setHeader(self, nVar, gridX):
368+
def setHeader(self, nVar, coordX):
369369
"""
370370
Set the descriptive grid structure to be stored in the file header.
371371
372372
Parameters
373373
----------
374374
nVar : int
375375
Number of 1D variables stored.
376-
gridX : np.1darray
376+
coordX : np.1darray
377377
The grid coordinates in X direction.
378378
379379
Note
380380
----
381-
When used in MPI decomposition mode, `gridX` **must** be the global grid.
381+
When used in MPI decomposition mode, `coordX` **must** be the global grid.
382382
"""
383-
grids = self.setupGrids(gridX=gridX)
383+
grids = self.setupCoords(coordX=coordX)
384384
self.header = {"nVar": int(nVar), **grids}
385385
self.nItems = nVar * self.nX
386386

387387
@property
388388
def hInfos(self):
389389
"""Array representing the grid structure to be written in the binary file."""
390-
return [np.array([self.nVar, self.nX], dtype=np.int64), np.array(self.header["gridX"], dtype=np.float64)]
390+
return [np.array([self.nVar, self.nX], dtype=np.int64), np.array(self.header["coordX"], dtype=np.float64)]
391391

392392
def readHeader(self, f):
393393
"""
@@ -399,8 +399,8 @@ def readHeader(self, f):
399399
File to read the header from.
400400
"""
401401
nVar, nX = np.fromfile(f, dtype=np.int64, count=2)
402-
gridX = np.fromfile(f, dtype=np.float64, count=nX)
403-
self.setHeader(nVar, gridX)
402+
coordX = np.fromfile(f, dtype=np.float64, count=nX)
403+
self.setHeader(nVar, coordX)
404404

405405
def reshape(self, fields: np.ndarray):
406406
fields.shape = (self.nVar, self.nX)
@@ -411,10 +411,10 @@ def reshape(self, fields: np.ndarray):
411411
@property
412412
def nX(self):
413413
"""Number of points in x direction"""
414-
return self.header["gridX"].size
414+
return self.header["coordX"].size
415415

416416
@staticmethod
417-
def setupGrids(**grids):
417+
def setupCoords(**grids):
418418
"""Utility function to setup grids in multuple dimensions, given the keyword arguments"""
419419
grids = {name: np.asarray(grid, dtype=np.float64) for name, grid in grids.items() if name.startswith("grid")}
420420
for name, grid in grids.items():
@@ -437,7 +437,7 @@ def setupMPI(cls, comm: MPI.Intracomm, iLocX, nLocX):
437437
comm : MPI.Intracomm
438438
The space decomposition communicator.
439439
iLocX : int
440-
Starting index of the local sub-domain in the global `gridX`.
440+
Starting index of the local sub-domain in the global `coordX`.
441441
nLocX : int
442442
Number of points in the local sub-domain.
443443
"""
@@ -602,34 +602,34 @@ class Cart2D(Cart1D):
602602
# -------------------------------------------------------------------------
603603
# Overriden methods
604604
# -------------------------------------------------------------------------
605-
def setHeader(self, nVar, gridX, gridY):
605+
def setHeader(self, nVar, coordX, coordY):
606606
"""
607607
Set the descriptive grid structure to be stored in the file header.
608608
609609
Parameters
610610
----------
611611
nVar : int
612612
Number of 1D variables stored.
613-
gridX : np.1darray
613+
coordX : np.1darray
614614
The grid coordinates in x direction.
615-
gridY : np.1darray
615+
coordY : np.1darray
616616
The grid coordinates in y direction.
617617
618618
Note
619619
----
620-
When used in MPI decomposition mode, `gridX` and `gridY` **must** be the global grid.
620+
When used in MPI decomposition mode, `coordX` and `coordX` **must** be the global grid.
621621
"""
622-
grids = self.setupGrids(gridX=gridX, gridY=gridY)
623-
self.header = {"nVar": int(nVar), **grids}
622+
coords = self.setupCoords(coordX=coordX, coordY=coordY)
623+
self.header = {"nVar": int(nVar), **coords}
624624
self.nItems = nVar * self.nX * self.nY
625625

626626
@property
627627
def hInfos(self):
628628
"""Array representing the grid structure to be written in the binary file."""
629629
return [
630630
np.array([self.nVar, self.nX, self.nY], dtype=np.int64),
631-
np.array(self.header["gridX"], dtype=np.float64),
632-
np.array(self.header["gridY"], dtype=np.float64),
631+
np.array(self.header["coordX"], dtype=np.float64),
632+
np.array(self.header["coordY"], dtype=np.float64),
633633
]
634634

635635
def readHeader(self, f):
@@ -642,9 +642,9 @@ def readHeader(self, f):
642642
File to read the header from.
643643
"""
644644
nVar, nX, nY = np.fromfile(f, dtype=np.int64, count=3)
645-
gridX = np.fromfile(f, dtype=np.float64, count=nX)
646-
gridY = np.fromfile(f, dtype=np.float64, count=nY)
647-
self.setHeader(nVar, gridX, gridY)
645+
coordX = np.fromfile(f, dtype=np.float64, count=nX)
646+
coordY = np.fromfile(f, dtype=np.float64, count=nY)
647+
self.setHeader(nVar, coordX, coordY)
648648

649649
def reshape(self, fields: np.ndarray):
650650
"""Reshape the fields to a [nVar, nX, nY] array (inplace operation)"""
@@ -656,7 +656,7 @@ def reshape(self, fields: np.ndarray):
656656
@property
657657
def nY(self):
658658
"""Number of points in y direction"""
659-
return self.header["gridY"].size
659+
return self.header["coordY"].size
660660

661661
# -------------------------------------------------------------------------
662662
# MPI-parallel implementation

pySDC/tests/test_helpers/test_fieldsIO.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ def testHeader(nDim, dtypeIdx):
1414
fileName = "testHeader.pysdc"
1515
dtype = DTYPES[dtypeIdx]
1616

17-
gridX = np.linspace(0, 1, num=256, endpoint=False)
18-
gridY = np.linspace(0, 1, num=64, endpoint=False)
17+
coordX = np.linspace(0, 1, num=256, endpoint=False)
18+
coordY = np.linspace(0, 1, num=64, endpoint=False)
1919

2020
if nDim == 0:
2121
Class = Scal0D
2222
args = {"nVar": 20}
2323
elif nDim == 1:
2424
Class = Cart1D
25-
args = {"nVar": 10, "gridX": gridX}
25+
args = {"nVar": 10, "coordX": coordX}
2626
elif nDim == 2:
2727
Class = Cart2D
28-
args = {"nVar": 10, "gridX": gridX, "gridY": gridY}
28+
args = {"nVar": 10, "coordX": coordX, "coordY": coordY}
2929

3030
f1 = Class(dtype, fileName)
3131
assert f1.__str__() == f1.__repr__(), "__repr__ and __str__ do not return the same result"
@@ -112,11 +112,11 @@ def testCart1D(nVar, nX, nSteps, dtypeIdx):
112112
fileName = "testCart1D.pysdc"
113113
dtype = DTYPES[dtypeIdx]
114114

115-
gridX = np.linspace(0, 1, num=nX, endpoint=False)
116-
nX = gridX.size
115+
coordX = np.linspace(0, 1, num=nX, endpoint=False)
116+
nX = coordX.size
117117

118118
f1 = Cart1D(dtype, fileName)
119-
f1.setHeader(nVar=nVar, gridX=gridX)
119+
f1.setHeader(nVar=nVar, coordX=coordX)
120120

121121
assert f1.nItems == nVar * nX, f"{f1} do not have nItems == nVar*nX"
122122
assert f1.nX == nX, f"{f1} has incorrect nX"
@@ -159,11 +159,11 @@ def testCart2D(nVar, nX, nY, nSteps, dtypeIdx):
159159
fileName = "testCart2D.pysdc"
160160
dtype = DTYPES[dtypeIdx]
161161

162-
gridX = np.linspace(0, 1, num=nX, endpoint=False)
163-
gridY = np.linspace(0, 1, num=nY, endpoint=False)
162+
coordX = np.linspace(0, 1, num=nX, endpoint=False)
163+
coordY = np.linspace(0, 1, num=nY, endpoint=False)
164164

165165
f1 = Cart2D(dtype, fileName)
166-
f1.setHeader(nVar=nVar, gridX=gridX, gridY=gridY)
166+
f1.setHeader(nVar=nVar, coordX=coordX, coordY=coordY)
167167

168168
assert f1.nItems == nVar * nX * nY, f"{f1} do not have nItems == nVar*nX"
169169
assert f1.nX == nX, f"{f1} has incorrect nX"
@@ -201,21 +201,21 @@ def initGrid(nVar, nX, nY=None):
201201
if nY is not None:
202202
nDim += 1
203203
x = np.linspace(0, 1, num=nX, endpoint=False)
204-
grids = (x,)
204+
coords = (x,)
205205
gridSizes = (nX,)
206206
u0 = np.array(np.arange(nVar) + 1)[:, None] * x[None, :]
207207

208208
if nDim > 1:
209209
y = np.linspace(0, 1, num=nY, endpoint=False)
210-
grids += (y,)
210+
coords += (y,)
211211
gridSizes += (nY,)
212212
u0 = u0[:, :, None] * y[None, None, :]
213213

214-
return grids, gridSizes, u0
214+
return coords, gridSizes, u0
215215

216216

217217
def writeFields_MPI(fileName, nDim, dtypeIdx, algo, nSteps, nVar, nX, nY=None):
218-
grids, gridSizes, u0 = initGrid(nVar, nX, nY)
218+
coords, gridSizes, u0 = initGrid(nVar, nX, nY)
219219

220220
from mpi4py import MPI
221221
from pySDC.helpers.blocks import BlockDecomposition
@@ -234,15 +234,15 @@ def writeFields_MPI(fileName, nDim, dtypeIdx, algo, nSteps, nVar, nX, nY=None):
234234
u0 = u0[:, iLocX : iLocX + nLocX]
235235

236236
f1 = Cart1D(DTYPES[dtypeIdx], fileName)
237-
f1.setHeader(nVar=nVar, gridX=grids[0])
237+
f1.setHeader(nVar=nVar, coordX=coords[0])
238238

239239
if nDim == 2:
240240
(iLocX, iLocY), (nLocX, nLocY) = blocks.localBounds
241241
Cart2D.setupMPI(comm, iLocX, nLocX, iLocY, nLocY)
242242
u0 = u0[:, iLocX : iLocX + nLocX, iLocY : iLocY + nLocY]
243243

244244
f1 = Cart2D(DTYPES[dtypeIdx], fileName)
245-
f1.setHeader(nVar=nVar, gridX=grids[0], gridY=grids[1])
245+
f1.setHeader(nVar=nVar, coordX=coords[0], coordY=coords[1])
246246

247247
u0 = np.asarray(u0, dtype=f1.dtype)
248248
f1.initialize()
@@ -298,8 +298,8 @@ def testCart1D_MPI(nProcs, dtypeIdx, algo, nSteps, nVar, nX):
298298
assert f2.nVar == nVar, f"incorrect nVar in MPI written fields {f2}"
299299
assert f2.nX == nX, f"incorrect nX in MPI written fields {f2}"
300300

301-
grids, _, u0 = initGrid(nVar, nX)
302-
assert np.allclose(f2.header['gridX'], grids[0]), f"incorrect gridX in MPI written fields {f2}"
301+
coords, _, u0 = initGrid(nVar, nX)
302+
assert np.allclose(f2.header['coordX'], coords[0]), f"incorrect coordX in MPI written fields {f2}"
303303

304304
times = np.arange(nSteps) / nSteps
305305
for idx, t in enumerate(times):
@@ -342,8 +342,8 @@ def testCart2D_MPI(nProcs, dtypeIdx, algo, nSteps, nVar, nX, nY):
342342
assert f2.nY == nY, f"incorrect nY in MPI written fields {f2}"
343343

344344
grids, _, u0 = initGrid(nVar, nX, nY)
345-
assert np.allclose(f2.header['gridX'], grids[0]), f"incorrect gridX in MPI written fields {f2}"
346-
assert np.allclose(f2.header['gridY'], grids[1]), f"incorrect gridY in MPI written fields {f2}"
345+
assert np.allclose(f2.header['coordX'], grids[0]), f"incorrect coordX in MPI written fields {f2}"
346+
assert np.allclose(f2.header['coordY'], grids[1]), f"incorrect coordY in MPI written fields {f2}"
347347

348348
times = np.arange(nSteps) / nSteps
349349
for idx, t in enumerate(times):

0 commit comments

Comments
 (0)