def fem(FV1, FV2): # Crear estructura para almacenar las fuerzas en cada nodo fuerza = np.zeros((FV1.vertices.shape[0], 3)) # Calcular fuerzas sobre cada elemento for i in xrange(FV1.faces.shape[0]): # Encontrar los nodos del elemento ni = FV1.faces[i, 0] nj = FV1.faces[i, 1] nk = FV1.faces[i, 2] # Coordenadas de cada nodo en estado inicial pi = FV1.vertices[ni] pj = FV1.vertices[nj] pk = FV1.vertices[nk] # Coordenadas de cada nodo en estado deformado Pi = FV2.vertices[ni] Pj = FV2.vertices[nj] Pk = FV2.vertices[nk] # Calculo de la fuerza en coordenadas globales para el elemento F = rt.rotacion(pi, pj, pk, Pi, Pj, Pk) # Vector fuerza por componentes asociado a cada nodo fuerza[ni] += F[0] fuerza[nj] += F[1] fuerza[nk] += F[2] return fuerza
def main(): # Comprobacipn del algoritmo de traslacion y rotacion de elementos print "---------------------------------------------------------\n" pi = np.array([0.0, 0.0, 0.0]) pj = np.array([2.0, 0.0, 0.0]) pk = np.array([1.0, 1.0, 0.0]) Pi = np.array([0.0, 0.0, 0.0]) Pj = np.array([2.0, 0.0, 0.0]) Pk = np.array([1.0, 2.0, 0.0]) print "Puntos del elemento inicial:", pi, pj, pk print "Puntos del elemento deformado:", Pi, Pj, Pk print "Fuerzas resultantes t: \n", t.fuerzas(pi, pj, pk, Pi, Pj, Pk) print "Fuerzas resultantes r: \n", r.rotacion(pi, pj, pk, Pi, Pj, Pk) print "---------------------------------------------------------\n"
#------------------------------------------------------------------------ # Plot data in FR coordinates-------------------------------------------- #------------------------------------------------------------------------ #Events limits fig2, axes = plt.subplots(3, 1, sharex=True, figsize=(5, 5)) colorline = 'blue' lw = 0.8 fs = 7 fs_label = 10 fs_tick = 8 fs_legend = 8 start = datetime.strptime(trange[0], '%Y-%m-%d') + timedelta(days=2) end = datetime.strptime('2018-08-29', '%Y-%m-%d') - timedelta(days=2) BxFR_2, ByFR_2, BzFR_2 = rotacion.rotacion(Bx_ace, By_ace, Bz_ace, theta_ICME2, phi_ICME2) BxFR_nube2 = BxFR_2[mask_icme2] ByFR_nube2 = ByFR_2[mask_icme2] BzFR_nube2 = BzFR_2[mask_icme2] #BxFR_nube2_mean = np.mean(BxFR_nube2) #Bo2 = np.max(ByFR_nube2) #p_gulisano = R*np.sqrt( np.abs(BxFR_nube2_mean/Bo2)/1.6) #p = np.round(p_gulisano, 2) #B = (Bx_ace**2 + By_ace**2 + Bz_ace**2)**(0.5) #BFR = (BxFR**2 + ByFR**2 + BzFR**2)**(0.5) ''' axes[0].plot(dates_ace, B_ace, label='B', color='black', linewidth = lw) axes[0].plot(dates_ace, B, label='B', color='blue', linewidth = lw) axes[0].plot(dates_ace, BFR, label='B', color='red', linewidth = lw) axes[0].set_ylabel('B [nT]',fontsize=fs_label)