MVN line

MVN line#

import numpy as np
import matplotlib.pylab as plt
from matplotlib.patches import Arc,StepPatch
from ipywidgets import widgets, interact, interactive, fixed, interact_manual
def vervormingV(locationx,locationy,scale,flip=0,rotation=0):
    vx = [-0.5,0,0,0.5]
    if flip==0:
        vy = [0.25,0.25,-0.25,-0.25]
    elif flip==1:
        vy = [-0.25,-0.25,0.25,0.25]
    vxr= np.add(np.multiply(np.cos(rotation/180*np.pi),vx),np.multiply(np.sin(rotation/180*np.pi),vy))
    vyr= np.add(np.multiply(np.sin(rotation/180*np.pi),vx),-np.multiply(np.cos(rotation/180*np.pi),vy))
    vxscaled = np.add(locationx,np.multiply(scale,vxr))
    vyscaled = np.add(locationy,np.multiply(scale,vyr))
    plt.plot(vxscaled,vyscaled,color='black',linewidth=1)
    plt.axis('equal')
def vervormingN(locationx,locationy,scale,sign=1,rotation=0):
    if sign==1:
        nx = [-0.5,0,0,0,0.5,0,0]
        ny = [0,0,0.5,0,0,0,-0.5]
    elif sign==0:
        nx = [-0.5,0.5]
        ny = [0,0]
    nxr= np.add(np.multiply(np.cos(rotation/180*np.pi),nx),np.multiply(np.sin(rotation/180*np.pi),ny))
    nyr= np.add(np.multiply(np.sin(rotation/180*np.pi),nx),-np.multiply(np.cos(rotation/180*np.pi),ny))
    nxscaled = np.add(locationx,np.multiply(scale,nxr))
    nyscaled = np.add(locationy,np.multiply(scale,nyr))
    plt.plot(nxscaled,nyscaled,color='black',linewidth=1)
    plt.axis('equal')
#vervormingV(1,1,1,flip=0,rotation=45)
#plt.figure()
#vervormingN(1,1,1,sign=0,rotation=45)

5.01a

def func(a,F,MVN):
    x=[0,a,a+a,a+a+a/2,a+a+a/2+a/2,a+a+a/2+a/2,a+a]
    y=[0,0,0,0,0,a,a]
    plt.plot(x,y,color='black',linewidth=2)
    Av = F/4
    Bv = F*2.5/2
    print('Oplegreactie Aᵥ = %.2f kN (\u2193)' % Av)
    print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % Bv)
    print('Oplegreactie Bₕ = %.0f kN (-)' % 0)
    if MVN == 'M-lijn':
        M_b = F*a/2
        scale = a/M_b/2
        M = np.multiply(scale,[0,M_b/2,M_b,0,0,0,0])
        My=np.add(y,M)
        plt.plot(x,My,color='blue')
        plt.annotate('%.0f kNm' % M_b,xy = [x[2],My[2]])
        ax = plt.gca()
        vervormingsteken = Arc(xy = [3.5*a/2,a/6],width = a/5, height = a/5,angle=180,theta1=180,theta2=360)
        ax.add_patch(vervormingsteken)
    elif MVN =='V-lijn':
        V_AB = -Av
        V_BF = F
        scale = a/max(V_AB,V_BF)/2
        V = [0,V_AB,V_AB,V_BF,V_BF,0,0,0,0]
        y=[0,0,0,0,0,0,0,a,a]
        Vy = np.add(y,np.multiply(scale,V))
        x=[0,0,a+a,a+a,a+a+a/2,a+a+a/2,a+a+a/2+a/2,a+a+a/2+a/2,a+a]
        plt.plot(x,Vy,color='blue')
        for i in range(1,5):
            plt.annotate('%.0f kN' % abs(V[i]),xy = [x[i],Vy[i]])
        vervormingV(a,Vy[1]/2,Vy[1]/2,0)
        vervormingV(a+a+a/4,Vy[3]/2,Vy[3]/2,1,0)
    elif MVN =='N-lijn':
        plt.plot(x,y,color='blue')
    plt.grid()
    plt.axis('equal')


interact(func, a = widgets.IntSlider(min=2, max=10, value=5, step=1, description="a (m)"),
        F = widgets.IntSlider(min=10, max=200, value=200, step=1, description="F (kN)"),
        MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, F, MVN)>

5.02a-d

def func(a,b,c,d,F1,F2,MVN):
    x1=[0,0,a,a,a+b,a+b]
    y1=[0,0,0,0,0,0]
    x2=[a,a,a,a]
    y2=[0,0,c,c]
    x3=[a,a,a+d,a+d]
    y3=[c,c,c,c]
    plt.plot(x1,y1,color='black',linewidth=2)
    plt.plot(x2,y2,color='black',linewidth=2)
    plt.plot(x3,y3,color='black',linewidth=2)
    B_v = (F1*(a+d)+F2*c)/(a+b)
    A_v = F1-B_v
    A_h = F2
    if A_v<0:
        print('Oplegreactie Aᵥ = %.2f kN (\u2193)' % abs(A_v))
    elif A_v==0:
        print('Oplegreactie Aᵥ = %.0f kN (-)' % A_v)
    else:
        print('Oplegreactie Aᵥ = %.2f kN (\u2191)' % A_v)
    print('Oplegreactie Aₕ = %.2f kN (\u2190)' % A_h)
    print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % B_v)
    if MVN == 'M-lijn':
        M_E = F1*d
        M_C_CE = F1*d+F2*c
        M_C_CB = -B_v*b
        M_C_AC = -A_v*a
        M1 = [0,0,M_C_AC,M_C_CB,0,0]
        M2 = [0,-M_C_CE,-M_E,0]
        M3 = [0,M_E,0,0]
        scale = 0.5*b/max(M1+M3)
        My1=np.add(y1,np.multiply(scale,M1))
        Mx2=np.add(x2,np.multiply(scale,M2))
        My3=np.add(y3,np.multiply(scale,M3))
        plt.plot(x1,My1,color='blue')
        plt.plot(Mx2,y2,color='blue')
        plt.plot(x3,My3,color='blue')
        plt.annotate('%.2f kNm' % M_E,xy = [x3[1],My3[1]])
        plt.annotate('%.2f kNm' % M_E,xy = [Mx2[2],y2[2]])
        plt.annotate('%.2f kNm' % M_C_CE,xy = [Mx2[1],y2[1]])
        plt.annotate('%.2f kNm' % M_C_CB,xy = [x1[3],My1[3]])
        plt.annotate('%.2f kNm' % abs(M_C_AC),xy = [x1[2],My1[2]])
        vervormingstekenAC = Arc(xy = [a*0.8,My1[2]/3],width = My1[2]/2, height = My1[2]/2,theta1=0,theta2=180)
        vervormingstekenBC = Arc(xy = [a+0.25*b,My1[3]/3],width = My1[3]/2, height = My1[3]/2,theta1=0,theta2=180)
        vervormingstekenCE = Arc(xy = [a+(M2[1]+M2[2])/2*scale/3,c/2],width = (M2[1]+M2[2])/2*scale/2, height = (M2[1]+M2[2])*scale/2/2,theta1=-90,theta2=90)
        vervormingstekenED = Arc(xy = [a+0.25*d,c+M3[1]*scale/3],width = M3[1]*scale/2, height = M3[1]*scale/2,theta1=0,theta2=180)
        ax = plt.gca()
        ax.add_patch(vervormingstekenAC)
        ax.add_patch(vervormingstekenBC)
        ax.add_patch(vervormingstekenCE)
        ax.add_patch(vervormingstekenED)
    elif MVN == 'V-lijn':
        V_E = F1
        V3 = [0,V_E,V_E,0]
        V_C_CE = F2
        V2 = [0,V_C_CE,V_C_CE,0]
        V_C_AC = A_v
        V_C_CB = -B_v
        V1 = [0,V_C_AC,V_C_AC,V_C_CB,V_C_CB,0]
        scale = 0.5*b/max(V1+V3)
        Vy1=np.add(y1,np.multiply(scale,V1))
        Vx2=np.add(x2,np.multiply(scale,V2))
        Vy3=np.add(y3,np.multiply(scale,V3))
        plt.plot(x1,Vy1,color='blue')
        plt.plot(Vx2,y2,color='blue')
        plt.plot(x3,Vy3,color='blue')
        plt.annotate('%.2f kN' % V_E,xy = [x3[1],Vy3[1]])
        plt.annotate('%.2f kN' % V_E,xy = [x3[2],Vy3[2]])
        plt.annotate('%.2f kN' % V_C_CE,xy = [Vx2[1],y2[1]])
        plt.annotate('%.2f kN' % V_C_CE,xy = [Vx2[2],y2[2]])
        plt.annotate('%.2f kN' % abs(V_C_AC),xy = [x1[1],Vy1[1]])
        plt.annotate('%.2f kN' % abs(V_C_AC),xy = [x1[2],Vy1[2]])
        plt.annotate('%.2f kN' % abs(V_C_CB),xy = [x1[3],Vy1[3]])
        plt.annotate('%.2f kN' % abs(V_C_CB),xy = [x1[4],Vy1[4]])
        if V_C_AC>0:
            vervormingV(a/2,V1[1]/2*scale,V1[1]/3*scale,flip=1,rotation=0)
        else:
            vervormingV(a/2,V1[1]/2*scale,V1[1]/3*scale,flip=0,rotation=0)
        vervormingV(a+b/2,V1[3]/2*scale,V1[3]/3*scale,flip=0,rotation=0)
        vervormingV(a+V2[1]/2*scale,c/2,V2[1]/3*scale,flip=1,rotation=90)
        vervormingV(a+d/2,c+V3[1]/2*scale,V3[1]/3*scale,flip=1,rotation=0)
    elif MVN == 'N-lijn':
        N_E = F2
        N_C_CE = F1
        N_C_AC = F2
        N_C_CB = 0
        N3 = [0,N_E,N_E,0]
        N2 = [0,N_C_CE,N_C_CE,0]
        N1 = [0,N_C_AC,N_C_AC,N_C_CB,N_C_CB,0]
        scale = 0.5*b/max(N1+N3)
        Ny1=np.add(y1,np.multiply(scale,N1))
        Nx2=np.add(x2,np.multiply(scale,N2))
        Ny3=np.add(y3,np.multiply(scale,N3))
        plt.plot(x1,Ny1,color='blue')
        plt.plot(Nx2,y2,color='blue')
        plt.plot(x3,Ny3,color='blue')
        plt.annotate('%.2f kN' % N_E,xy = [x3[1],Ny3[1]])
        plt.annotate('%.2f kN' % N_E,xy = [x3[2],Ny3[2]])
        plt.annotate('%.2f kN' % N_C_CE,xy = [Nx2[1],y2[1]])
        plt.annotate('%.2f kN' % N_C_CE,xy = [Nx2[2],y2[2]])
        plt.annotate('%.2f kN' % N_C_AC,xy = [x1[1],Ny1[1]])
        plt.annotate('%.2f kN' % N_C_AC,xy = [x1[2],Ny1[2]])
        vervormingN(a/2,N1[1]/2*scale,N1[1]/3*scale,sign=0,rotation=0)
        vervormingN(a+N2[1]/2*scale,c/2,N2[1]/3*scale,sign=0,rotation=90)
        vervormingN(a+d/2,c+N3[1]/2*scale,N3[1]/3*scale,sign=0,rotation=0)
    plt.grid()
    plt.axis('equal')


interact(func, 
         a = widgets.IntSlider(min=1, max=10, value=5, step=1, description="a (m)"),
         b = widgets.IntSlider(min=1, max=10, value=5, step=1, description="b (m)"),
         c = widgets.IntSlider(min=1, max=10, value=5, step=1, description="c (m)"),
         d = widgets.IntSlider(min=1, max=10, value=5, step=1, description="d (m)"),
        F1 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F1 (kN)"),
        F2 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F2 (kN)"),
         MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, b, c, d, F1, F2, MVN)>

5.3

def func(a,F,MVN):
    x1=[0,0,a,a,a,8,8]
    y1=[0,0,a*6/8,a*6/8,a*6/8,6,6]
    x2=[8,8,8,8]
    y2=[3,3,6,6]
    plt.plot(x1,y1,color='black',linewidth=2)
    plt.plot(x2,y2,color='black',linewidth=2)
    B_v = (F*4*a-F*1*a*3/4)/8
    A_v = F*4-B_v
    A_h = F
    print('Oplegreactie Aᵥ = %.2f kN (\u2191)' % A_v)
    print('Oplegreactie Aₕ = %.2f kN (\u2192)' % A_h)
    print('Oplegreactie Bᵥ = %.2f kN (\u2191)' % B_v)
    plt.grid()
    plt.axis('equal')
    rotation=np.arctan(3/4)/np.pi*180
    if MVN == 'M-lijn':
        M_F = -B_v*(8-a)
        M1 = [0,0,M_F,M_F,M_F,0,0]
        M2 = [0,0,0,0]
        scale = 0.5*8/M_F
        Mxr= np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,M1)))
        Myr= np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,M1)))
        Mx2 = np.add(M2,x2)
        My2 = y2
        plt.plot(Mxr,Myr,color='blue')
        plt.plot(Mx2,My2,color='blue')
        plt.annotate('%.2f kNm' % abs(M_F),xy = [Mxr[3],Myr[3]])
        ax = plt.gca()
        Vervx = max(min(6,a),2) + np.sin(rotation/180*np.pi)*M_F*scale/2
        Vervy = max(min(4.5,a*6/8),1.5) - np.cos(rotation/180*np.pi)*M_F*scale/3
        vervormingsteken = Arc(xy = [Vervx,Vervy],width = M_F*scale/3, height = M_F*scale/3,angle=rotation,theta1=180,theta2=360)
        ax.add_patch(vervormingsteken)
    elif MVN == 'N-lijn':
        N_SC = B_v*3/5
        N_AC = -A_v*3/5-A_h*4/5
        N1 = [0,N_AC,N_AC,0,N_SC,N_SC,0]
        N2 = [0,B_v,B_v,0]
        scale = 0.5*8/max(abs(N_SC),abs(N_AC))
        Nxr = np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,N1)))
        Nyr = np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,N1)))
        Nx2 = np.add(np.multiply(scale,N2),x2)
        Ny2 = y2
        plt.plot(Nxr,Nyr,color='blue')
        plt.plot(Nx2,Ny2,color='blue')
        plt.annotate('%.2f kN' % abs(N_AC),xy = [Nxr[1],Nyr[1]])
        plt.annotate('%.2f kN' % abs(N_AC),xy = [Nxr[2],Nyr[2]])
        plt.annotate('%.2f kN' % N_SC,xy = [Nxr[4],Nyr[4]])
        plt.annotate('%.2f kN' % N_SC,xy = [Nxr[5],Nyr[5]])
        plt.annotate('%.2f kN' % abs(B_v),xy = [Nx2[1],Ny2[1]])
        plt.annotate('%.2f kN' % abs(B_v),xy = [Nx2[2],Ny2[2]])
        vervormingN(np.mean(Nxr[0:4]),np.mean(Nyr[0:4]),N1[1]/3*scale,sign=0,rotation=rotation)
        vervormingN(np.mean(Nxr[3:7]),np.mean(Nyr[3:7]),N1[4]/3*scale,sign=1,rotation=rotation)
        vervormingN(8+B_v*scale/2,4.5,B_v/3*scale,sign=0,rotation=0)
    elif MVN == 'V-lijn':
        V_SC = B_v*4/5
        V_AC = -A_v*4/5+A_h*3/5
        V1 = [0,V_AC,V_AC,0,V_SC,V_SC,0]
        V2 = [0,0,0,0]
        scale = 0.5*8/max(abs(V_SC),abs(V_AC))
        Vxr = np.add(x1,np.multiply(np.sin(rotation/180*np.pi),np.multiply(scale,V1)))
        Vyr = np.add(y1,-np.multiply(np.cos(rotation/180*np.pi),np.multiply(scale,V1)))
        Vx2 = np.add(np.multiply(scale,V2),x2)
        Vy2 = y2
        plt.plot(Vxr,Vyr,color='blue')
        plt.plot(Vx2,Vy2,color='blue')
        plt.annotate('%.2f kN' % abs(V_AC),xy = [Vxr[1],Vyr[1]])
        plt.annotate('%.2f kN' % abs(V_AC),xy = [Vxr[2],Vyr[2]])
        plt.annotate('%.2f kN' % V_SC,xy = [Vxr[4],Vyr[4]])
        plt.annotate('%.2f kN' % V_SC,xy = [Vxr[5],Vyr[5]])
        vervormingV(np.mean(Vxr[0:4]),np.mean(Vyr[0:4]),V1[1]/3*scale,flip=1,rotation=rotation)
        vervormingV(np.mean(Vxr[3:7]),np.mean(Vyr[3:7]),V1[4]/3*scale,flip=0,rotation=rotation)
interact(func, 
         a = widgets.FloatSlider(min=.1, max=7.9, value=4, step=0.1, description="a (m)",readout_format='.1f'),
        F = widgets.IntSlider(min=0, max=200, value=200, step=1, description="F (kN)"),
         MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, F, MVN)>
def func(a,q1,q2,MVN):
    x1=np.linspace(0,2*a,201)
    print(x1)
interact(func, 
         a = widgets.FloatSlider(min=.1, max=7.9, value=4, step=0.1, description="a (m)",readout_format='.1f'),
        q1 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="q1 (kN/m)"),
        q2 = widgets.IntSlider(min=0, max=200, value=200, step=1, description="q2 (kN/m)"),
         MVN = widgets.ToggleButtons(options=['N-lijn', 'V-lijn', 'M-lijn']))
<function __main__.func(a, q1, q2, MVN)>