Skip to content
Snippets Groups Projects
Commit 16720d39 authored by BOULANGEOT Nathan's avatar BOULANGEOT Nathan
Browse files

Delete tool.py

parent fc2e9626
No related branches found
No related tags found
No related merge requests found
import numpy as np
from ase.constraints import FixScaled,FixAtoms
from ase.io import Trajectory
from dscribe.descriptors import SOAP
import os
import ase
def sign(x):
if x<0:
return -1
else:
return 1
def get_train_data(traj,data_folder,train_pos_indices):
sys=Trajectory(traj)
ind_slab=sys[0].constraints[1].index
ind_free=np.delete(np.arange(len(sys[0])),ind_slab)
species=[]
elem=sys[0].get_chemical_symbols()
#identification des espèces
for el in range(len(elem)):
if elem[el] not in species:
species.append(elem[el])
y_ini=np.load(data_folder+'/E.npy')
index_pos=np.load(data_folder+'/ind_pos.npy')
ind_train=[]
#select only 3 config per position
for i in range(len(index_pos)):
if i in train_pos_indices:
ind_train.append(index_pos[i,0])
ind_train.append((index_pos[i,1]-index_pos[i,0]+1)//2)
ind_train.append(index_pos[i,1])
y_train=np.array([y_ini[i] for i in ind_train])
return [sys[i] for i in ind_train],y_train,species
def pos_to_relax(poscar_file,n=20):
poscar=ase.io.read(poscar_file)
#position à relaxer
a=poscar.get_cell()[0,0]
b=poscar.get_cell()[1,1]
c=poscar.get_cell()[2,2]
#maillage
n=20
Xpos=[i*a/n for i in range(n)]
Ypos=[i*b/n for i in range(n)]
xx,yy=np.meshgrid(Xpos,Ypos)
xx,yy=np.ravel(xx),np.ravel(yy)
zz=np.empty(len(xx))
#zpos
atom_top=poscar.get_positions()
for i in range(len(xx)):
dx = atom_top[:,0] - xx[i]
dy = atom_top[:,1] - yy[i]
dz = atom_top[:,2] - 18
dxy=np.linalg.norm([dx,dy,dz],axis=0)
indice=np.where(dxy==np.min(dxy))[0][0]
zz[i]=atom_top[indice,2]+1.6
return xx,yy,zz
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment