commit
						ed4ecafd3d
					
				| @ -0,0 +1,83 @@ | |||||||
|  | import numpy as np | ||||||
|  | import matplotlib.pyplot as plt | ||||||
|  | from mpl_toolkits.mplot3d import Axes3D | ||||||
|  | import orthopoly | ||||||
|  | 
 | ||||||
|  | def c2s(posicionescart): | ||||||
|  |     ''' | ||||||
|  |     De cartesianas a esfericas | ||||||
|  |     ''' | ||||||
|  |     x,y,z       = posicionescart.T | ||||||
|  |     r,theta,phi = orthopoly.spherical_harmonic.cart2sph(-x,-y,z) #Bug in library | ||||||
|  |     return np.asarray([r,theta,phi]).T | ||||||
|  | 
 | ||||||
|  | def fromdata_tomatrix(file_path): | ||||||
|  |      | ||||||
|  |     ''' | ||||||
|  |     Lee los archivos y los convierte a matriz | ||||||
|  |     El formato de los arhcivos es: | ||||||
|  |     5124 | ||||||
|  |     20   20   20   0 | ||||||
|  |     M   -0.0928612   12.2444   6.01067   0 | ||||||
|  |     Cuando barre todas las particulas vuelve a generar: | ||||||
|  |     # numero de particulas | ||||||
|  |     # 20 20 20 0  | ||||||
|  |     # M (tipo de particula) x,y,z 0 | ||||||
|  |      | ||||||
|  |     --> Admite archivos txt,xyz,... | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  |     filtered_data = [] | ||||||
|  | 
 | ||||||
|  |     # Leer el archivo línea por línea | ||||||
|  |     with open(file_path, 'r') as file: | ||||||
|  |         lines = file.readlines() | ||||||
|  | 
 | ||||||
|  |     # Procesar cada línea | ||||||
|  |     for line in lines: | ||||||
|  |         if line.startswith('M'): | ||||||
|  |             parts = line.split() | ||||||
|  |             if len(parts) > 4:  # Asegurar que tiene suficientes columnas | ||||||
|  |                 filtered_data.append([float(parts[1]), float(parts[2]), float(parts[3])]) | ||||||
|  | 
 | ||||||
|  |     return np.array(filtered_data) | ||||||
|  | 
 | ||||||
|  | def calculo_cm(data): | ||||||
|  |     ''' | ||||||
|  |     Para calcular el centro de masas | ||||||
|  |     ''' | ||||||
|  |      | ||||||
|  |     if data.shape[0] % 5124 != 0: | ||||||
|  |         cociente = data.shape[0] // 5124 | ||||||
|  |         data = data[0:int(cociente*5124)] | ||||||
|  |         print("La trayectoria no se cargo COMPLETAMENTE, se calcula cm hasta el tiempo mas proximo") | ||||||
|  |      | ||||||
|  | 
 | ||||||
|  |     v1 = int(data.shape[0]/2) # Numero de puntos | ||||||
|  |     matrixcm = np.empty((v1,3)) | ||||||
|  |      | ||||||
|  |     matrixcm[0,:] = (data[0,:]+data[1,:])/2 | ||||||
|  |      | ||||||
|  |     for i in range(1,v1,1): | ||||||
|  |         matrixcm[i,:] = (data[2*i,:]+data[2*i +1])/2 | ||||||
|  |          | ||||||
|  |     matrixcm_sph = c2s(matrixcm) | ||||||
|  |      | ||||||
|  |     datos_cart = matrixcm.reshape(int(v1/2562),-1,3)  | ||||||
|  |     datos_esf = matrixcm_sph.reshape(int(v1/2562),-1,3) | ||||||
|  |          | ||||||
|  |     return datos_cart,datos_esf | ||||||
|  | 
 | ||||||
|  | # Se tiene que poner esto para cargar las trayectorias:  | ||||||
|  |      | ||||||
|  | file1 = "trajd_xi2_t06.xyz" | ||||||
|  | # file1 = "traj_0_00001_2.xyz" | ||||||
|  | # file1 = "trayectoriabase.xyz" | ||||||
|  | matriz = fromdata_tomatrix(file1) | ||||||
|  | 
 | ||||||
|  | dcart,desf = calculo_cm(matriz) | ||||||
|  | 
 | ||||||
|  | np.save('matrizcartd_xi2_t06', dcart) | ||||||
|  | # np.save('matrizcart_xi2_t0',dcart) | ||||||
|  | # np.save('trayectoria_base',dcart) | ||||||
|  | 
 | ||||||
					Loading…
					
					
				
		Reference in new issue