Skip to content

Commit 0524753

Browse files
committed
starting to work on #53; adding there atoms [e,x,y,z] array into GridUtils and HighLevel
1 parent 6c18e93 commit 0524753

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

ppafm/GridUtils.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -337,14 +337,16 @@ def saveWSxM_3D( prefix, data, extent, slices=None ):
337337

338338
#================ Npy
339339

340-
def saveNpy(fname, data, lvec , head=None):
340+
def saveNpy(fname, data, lvec , atoms, head=None):
341341
np.save(fname+'.npy', data)
342342
np.save(fname+'_vec.npy',lvec)
343+
np.save(fname+'_atoms.npy',np.array(atoms,dtype=float))
343344

344345
def loadNpy(fname):
345346
data = np.load(fname+'.npy')
346347
lvec = np.load(fname+'_vec.npy')
347-
return data.copy(), lvec; #necessary for being 'C_CONTINUOS'
348+
atoms = np.load(fname+'_atoms.npy')
349+
return data.copy(), lvec, atoms; #necessary for being 'C_CONTINUOS'
348350

349351
# =============== Vector Field
350352

@@ -371,24 +373,23 @@ def loadVecFieldNpy( fname, FF = None ):
371373
Fy = np.load(fname+'_y.npy' )
372374
Fz = np.load(fname+'_z.npy' )
373375
lvec = np.load(fname+'_vec.npy' )
376+
atoms = np.load(fname+'atoms.npy')
374377
FF = packVecGrid( Fx, Fy, Fz, FF )
375378
del Fx,Fy,Fz
376-
return FF, lvec
379+
return FF, lvec, atoms
377380

378381
def saveVecFieldXsf( fname, FF, lvec, head = XSF_HEAD_DEFAULT ):
379382
saveXSF(fname+'_x.xsf', FF[:,:,:,0], lvec, head )
380383
saveXSF(fname+'_y.xsf', FF[:,:,:,1], lvec, head )
381384
saveXSF(fname+'_z.xsf', FF[:,:,:,2], lvec, head )
382385

383-
def saveVecFieldNpy( fname, FF, lvec , head = XSF_HEAD_DEFAULT ):
386+
def saveVecFieldNpy( fname, FF, lvec , atoms, head = XSF_HEAD_DEFAULT ):
384387
np.save(fname+'_x.npy', FF[:,:,:,0] )
385388
np.save(fname+'_y.npy', FF[:,:,:,1] )
386389
np.save(fname+'_z.npy', FF[:,:,:,2] )
387390
np.save(fname+'_vec.npy', lvec )
388-
if (head != XSF_HEAD_DEFAULT ):
389-
print("saving atoms")
390-
tmp0=head[0]; q=np.zeros(len(tmp0)); #head: [e,[x,y,z],lvec]
391-
np.save(fname+'_atoms.npy',[tmp0,head[1][0],head[1][1],head[1][2],q]) #atoms: [e, x, y, z, q]
391+
print("saving atoms") # atoms: [e, x, y, z];
392+
np.save(fname+'_atoms.npy',np.array(atoms,dtype=float)) # at the moment we did not switched npz, I will do it later, maybe #
392393

393394
def limit_vec_field( FF, Fmax=100.0 ):
394395
'''
@@ -400,14 +401,14 @@ def limit_vec_field( FF, Fmax=100.0 ):
400401
FF[:,:,:,1].flat[mask] *= Fmax/FR[mask]
401402
FF[:,:,:,2].flat[mask] *= Fmax/FR[mask]
402403

403-
def save_vec_field(fname, data, lvec, data_format="xsf", head = XSF_HEAD_DEFAULT ):
404+
def save_vec_field(fname, data, lvec, data_format="xsf", head = XSF_HEAD_DEFAULT, atoms = [[0.],[0.],[0.],[0.]] ):
404405
'''
405406
Saving scalar fields into xsf, or npy
406407
'''
407408
if (data_format=="xsf"):
408409
saveVecFieldXsf(fname, data, lvec, head = head )
409410
elif (data_format=="npy"):
410-
saveVecFieldNpy(fname, data, lvec, head = head )
411+
saveVecFieldNpy(fname, data, lvec, atoms, head = head )
411412
else:
412413
print("I cannot save this format!")
413414

@@ -419,7 +420,7 @@ def load_vec_field(fname, data_format="xsf"):
419420
if (data_format=="xsf"):
420421
data, lvec, ndim, head =loadVecFieldXsf(fname)
421422
elif (data_format=="npy"):
422-
data, lvec = loadVecFieldNpy(fname)
423+
data, lvec, atoms = loadVecFieldNpy(fname)
423424
ndim = np.delete(data.shape,3)
424425
else:
425426
print("I cannot load this format!")
@@ -428,14 +429,16 @@ def load_vec_field(fname, data_format="xsf"):
428429

429430
# =============== Scalar Fields
430431

431-
def save_scal_field(fname, data, lvec, data_format="xsf", head = XSF_HEAD_DEFAULT ):
432+
def save_scal_field(fname, data, lvec, data_format="xsf", head = XSF_HEAD_DEFAULT , atoms = [[0.],[0.],[0.],[0.]]):
432433
'''
433434
Saving scalar fields into xsf, or npy
434435
'''
435436
if (data_format=="xsf"):
436437
saveXSF(fname+".xsf", data, lvec, head = head)
437438
elif (data_format=="npy"):
438439
saveNpy(fname, data, lvec, head = head)
440+
attmp = np.array(atoms,dtype=float);
441+
np.save(fname+'_atoms.npy',attmp) # at the moment we did not switched npz, I will do it later, maybe #
439442
else:
440443
print("I cannot save this format!")
441444

@@ -444,10 +447,11 @@ def load_scal_field(fname, data_format="xsf"):
444447
'''
445448
Loading scalar fields into xsf, or npy
446449
'''
450+
atoms = [[0.],[0.],[0.],[0.]] #
447451
if (data_format=="xsf"):
448452
data, lvec, ndim, head =loadXSF(fname+".xsf")
449453
elif (data_format=="npy"):
450-
data, lvec = loadNpy(fname)
454+
data, lvec, atoms = loadNpy(fname)
451455
ndim = data.shape
452456
elif (data_format=="cube"):
453457
data,lvec, ndim, head = loadCUBE(fname+".cube")

ppafm/HighLevel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ def computeLJ( geomFile, speciesFile, save_format=None, computeVpot=False, Fmax=
176176
# --- save to files ?
177177
if save_format is not None:
178178
if(verbose>0): print("computeLJ Save ", save_format)
179-
GU.save_vec_field( 'FF'+ffModel, FF, lvec, data_format=save_format, head=atomstring )
179+
GU.save_vec_field( 'FF'+ffModel, FF, lvec, data_format=save_format, head=atomstring, atoms = atoms )
180180
if computeVpot:
181181
GU.save_scal_field( 'E'+ffModel, V, lvec, data_format=save_format, head=atomstring )
182182
if(verbose>0): print("<<<END: computeLJ()")

0 commit comments

Comments
 (0)