Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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"
Ejemplo n.º 3
0
#------------------------------------------------------------------------
# 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)