Foundation dynamic analysis

Python code:


# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt
import numpy as np

import strupy.units as u
from unum.units import um
u.um = um

import math

#! ### Fundament blokowy po wentylator

show = True #<<< (zobacz podstawy teoretyczne)
if show:
    #%img action_foundation_fig_1.png
    None
    
#! ---

#! ### Dane wejściowe
#! Geometria fundamentu
a_f = 3.8 *  u.m #<< - szerokość fundamentu
b_f = 5.20* u.m #<< - dlugość fundamentu
h_f = 1.4 * u.m #<< - wysokość fundamentu
m_f = a_f * b_f * h_f * 2100 * u.kg / u.m3 #! - masa fundamentu betonowego

#! Dane urzadzenia
m_u = 4640.0 * u.kg #<< - masa urzadzenia
n_m = 991.0 #<< - predkość obrotowa [rpm]
n_m / 60.0 #%requ - częstość w [Hz]
omega_m = n_m / (60.0 * u.s) * 2 * math.pi #! - predkość obrotowa [rad/s]
h_u = 3.2 * u.m #<< - wysokość srodka cęźkośći maszyny wzgl. spodu fund
P_d = 1.57 * u.kN #<< - siła dynamiczna
h_s = 3.2 * u.m #<< - wysokość przyłozenia siły wzgl. spodu fundamentu

#! Podloże gruntowe
C_o = 18.0 * u.MPa / u.m #<< - dynamiczny wsp. podloża (wg. tab.1 PN)

#! ---
#! ### Obliczenia
M_c = m_u + m_f #! - masa calkowita
F = a_f * b_f #! - powierzchnia podstawy fundamentu
p = M_c / F * 10.0 * u.N / u.kg
p = p.asUnit(u.kPa) #! - nacisk statyczny na grunt
#! Współczynniki sztywności podłoża
C_z = C_o * (1 + 2*(a_f + b_f) / (u.m**-1 * F)) * (p/(20*u.kPa))**0.5 #! - dynamiczny współczynnik podłoza
C_x = 0.7 * C_z #! - ddynamiczny współczynnik podłoza
C_fi = C_o * (1 + 2*(a_f + 3 * b_f) / (u.m**-1 * F)) * (p/(20*u.kPa))**0.5 #! - dynamiczny współczynnik podłoża

#! Sztywność podłoża
K_z = C_z * F
K_z = K_z.asUnit(u.kN / u.m) #! - sztywność kier. z

K_x = C_x * F
K_x = K_x.asUnit(u.kN / u.m) #! - sztywność kier. x

I_y = a_f**3 * b_f / 12 #! - moment bezwladności podstawy

K_fi = I_y * C_fi
K_fi = K_fi.asUnit(u.kNm) #! - sztywność na obrót

z_k = (m_f * h_f/2 + m_u * h_u) / M_c #! - wysokość środka cięźkośći układu

#! Połozenie punktu kontroli drgań
zp = 3.2 * u.m #<< wysokość od podstawy fundamentu
xp = 0.0 * u.m #<< odleglość w poziomie od osi fundamentu

delta = 0.1 #<< - błąd szacowania czestotliwości degań własnych
#! ### Kątowa częstość drgań pionowych

Lambda_z = (K_z / M_c)**0.5 #%requ - w [rad/s] (czestość maszyny var_omega_m)
Lambda_zmin = Lambda_z * (1 - delta) #%requ - dolna granica szacowanej czestotliwości
Lambda_zmax = Lambda_z * (1 + delta) #%requ - górna granica szacowanej czestotliwości
#! Szacowana czestość rezonansowa w przedziale val_Lambda_zmin - val_Lambda_zmax

A_oz = P_d / K_z
A_oz =A_oz.asUnit(u.um)#! - przemieszczenie pionowe pod dzialaniem statycznym sily Pd

#! ### Katowa czestość drgan wahadlowych
Lambda_fi = (K_x * K_fi /( M_c * (K_x * z_k**2 + K_fi)) )**0.5 #! - w [rad/s] (czestość maszyny var_omega_m)
Lambda_fimin = Lambda_fi * (1 - delta) #%requ - dolna granica szacowanej czestotliwości
Lambda_fimax = Lambda_fi * (1 + delta) #%requ - górna granica szacowanej czestotliwości
#! Szacowana czestość rezonansowa w przedziale val_Lambda_fimin - val_Lambda_fimax

A_o1 = P_d / K_x * (1 + K_x * h_s * zp / K_fi)
A_o1 = A_o1.asUnit(u.um)#! - przemieszczenie poziome pod dzialaniem statycznym sily Pd

A_o2 = P_d / K_fi * h_s * xp
A_o2 = A_o2.asUnit(u.um)#! - przemieszczenie pionowe pod dzialaniem statycznym sily Pd

#! ### Rodzaj strojenia
#! Ze wzgledu na czestotliwość var_Lambda_z
if  Lambda_zmin < omega_m < Lambda_zmax:
    #! ####!!!Praca w strefie rezonansu var_Lambda_zmin < var_omega_m < var_Lambda_zmax !!!
    None
if  omega_m < Lambda_zmin:
    None
    #! OK - Strojenie wysokie var_omega_m < var_Lambda_zmin 
if  Lambda_zmax < omega_m:
    None
    #! OK - Strojenie niskie var_Lambda_zmax < var_omega_m

#! Ze wzgledu na czestotliwość var_Lambda_fi
if  Lambda_fimin < omega_m < Lambda_fimax:
    #! ####!!!Praca w strefie rezonansu var_Lambda_fimin < var_omega_m < var_Lambda_fimax !!!
    None
if  omega_m < Lambda_fimin:
    None
    #! OK - Strojenie wysokie var_omega_m < var_Lambda_fimin 
if  Lambda_fimax < omega_m:
    None
    #! OK - Strojenie niskie var_Lambda_fimax < var_omega_m
    
show = True #<<< (zobacz wykres strojenia)
if show:
    x_max = 1.2*max(omega_m, Lambda_zmax, Lambda_fimax).asNumber()
    
    y1 = np.array([0, 0, 0.3, 0.3, 0, 0])
    x1 = np.array([0, Lambda_zmin.asNumber(), Lambda_zmin.asNumber(), Lambda_zmax.asNumber(), Lambda_zmax.asNumber(), x_max])
    x1a = np.array([0, Lambda_z.asNumber(), Lambda_z.asNumber(), Lambda_z.asNumber(), Lambda_z.asNumber(), x_max])
    
    y2 = y1
    x2 = np.array([0, Lambda_fimin.asNumber(), Lambda_fimin.asNumber(), Lambda_fimax.asNumber(), Lambda_fimax.asNumber(), x_max])
    x2a = np.array([0, Lambda_fi.asNumber(), Lambda_fi.asNumber(), Lambda_fi.asNumber(), Lambda_fi.asNumber(), x_max])

    xm1 = np.arange(0.0, omega_m.asNumber(), 10.0)
    ym1 = 1.0 * (xm1 / omega_m.asNumber())**2
    ym2 = np.array([0, 0, 1.0, 0, 0])
    xm2 = np.array([0, omega_m.asNumber(), omega_m.asNumber(), omega_m.asNumber(), x_max])
    
    plt.figure(1)
    plt.fill(x1, y1, alpha=0.3, label='szacowany obszar Lambda_z', color='blue')
    plt.plot(x1a, y1, label='Lambda_z', color='blue')
    
    
    plt.fill(x2, y2, alpha=0.3, label='szacowany obszar Lambda_fi', color='green')
    plt.plot(x2a, y2, label='Lambda_fi', color='green')
    
    
    plt.plot(xm1, ym1, label='sila wymuszajaca', color='yellow')
    plt.plot(xm2, ym2, label='omega_m', color='red')
    plt.legend()
    plt #%plt
    #plt.show()
    plt.clf()

#! ### Naprezenia pod fundamentem
p #! - nacisk statyczny na grunt od fundamentu i maszyny
sigma_pov = P_d / F
sigma_pov = sigma_pov.asUnit(u.kPa)#! - statyczny nacisk od sily wymuszajacej pionowo

sigma_poh = (P_d * h_s)/(a_f**2 * b_f / 6)
sigma_poh = sigma_poh.asUnit(u.kPa)#! - statyczny nacisk od sily wymuszajacej poziomo


#! ### Amplitudy drgań

gamma = 0.13 #! - tłumienie gruntu

#!--------------------------------------------------------------------------------
#! ###Praca na pełnych obrotach val_omega_m
#! Dopuśćzalne amplitudy drgań dla val_omega_m
omega_m / (2*math.pi) * 60.0 #%requ x [obr]
show = True #<<< (zobacz wykres PN)
if show:
    #%img action_foundation_fig_3.png
    None
A_xdop = 110.0 * u.um    #<< - poziomych 
A_zdop = 70.0 * u.um   #<< - pionowych
#! #### Drgania pionowe
if omega_m < Lambda_zmin:
    Lambda_zmod = Lambda_zmin #%requ strojenie wysokie
if omega_m > Lambda_zmax:
    Lambda_zmod = Lambda_zmax #%requ strojenie niskie
if Lambda_zmin <= omega_m <= Lambda_zmax:
    Lambda_zmod = omega_m #%requ praca w strefie rezonansu!!!
    Lambda_zmod = Lambda_zmod * 0.999
    
eta_z = omega_m / Lambda_zmod #%requ

tlumienie = False
if 0.75<eta_z<1.25:
    #! fundament pracuje w strefie rezonanasu
    tlumienie = True #<<< - dodatkwowo uzglednic tłumienie var_gamma (nie zalecane)
    
if tlumienie:
    ni = 1 / ((1 - eta_z**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
else:
    ni = 1 / ((1 - eta_z**2)**2)**0.5 #%requ - wzmocnienie
    
A_dz = ni * A_oz   #%requ - Amplituda drgań pionowych

#! #### Drgania wahadłowe
if omega_m < Lambda_fimin:
    Lambda_fimod = Lambda_fimin #%requ strojenie wysokie
if omega_m > Lambda_fimax:
    Lambda_fimod = Lambda_fimax #%requ strojenie niskie
if Lambda_fimin <= omega_m <= Lambda_fimax:
    Lambda_fimod = omega_m #%requ praca w strefie rezonansu!!!
    Lambda_fimod = Lambda_fimod * 0.999
    
eta_fi = omega_m / Lambda_fimod #%requ

tlumienie = False
if 0.75<eta_fi<1.25:
    #! fundament pracuje w strefie rezonanasu
    tlumienie = False #<<< - dodatkwowo uzglednic tłumienie var_gamma (nie zalecane)
    
if tlumienie:
    ni = 1 / ((1 - eta_fi**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
else:
    ni = 1 / ((1 - eta_fi**2)**2)**0.5 #%requ - wzmocnienie
A_do1 = ni * A_o1   #%requ - amplituda drgań poziomych
A_do2 = ni * A_o2   #%requ - amplituda drgań pionowych
#! #### Drgania całkowite
A_x = A_do1 #%requ - całkowita amplituda drgań poziomych var_A_xdop
A_z = A_dz + A_do2 #%requ - całkowita amplituda drgań pionowych var_A_zdop

if (A_x > A_xdop) or (A_z > A_zdop):
    None
    #! ### !! Przekroczone amplitudy drgań !!

if Lambda_zmax < omega_m:
    #!--------------------------------------------------------------------------------
    #! ### Rezonans przejśćiowy dla var_Lambda_zmax (drgania pionowe)
    omega_r = Lambda_zmax #!
    omega_r / (2*math.pi) * 60.0 #%requ x [obr]
    #! Dopuśćzalne amplitudy drgań dla val_omega_r
    show = True #<<< (zobacz wykres PN)
    if show:
        #%img action_foundation_fig_3.png
        None
    A_xdop = 120.0 * u.um #<< - poziomych 
    A_zdop = 80.0 * u.um #<< - pionowych

    P_dred = P_d * (omega_r / omega_m)**2 #%requ -siła dynamiczna dla obrotów val_omega_r
    #! Drgania pionowe
    eta_z = omega_r / (Lambda_z) #%requ
    ni = 1 / ((1 - eta_z**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
    A_dz = P_dred / P_d * ni * A_oz   #%requ - Amplituda drgań pionowych

    #! Drgania wahadłowe
    eta_fi = omega_r / (1.25* Lambda_fi) #%requ
    ni = 1 / ((1 - eta_fi**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
    A_do1 = P_dred / P_d * ni * A_o1   #%requ - amplituda drgań poziomych
    A_do2 = P_dred / P_d * ni * A_o2   #%requ - amplituda drgań pionowych
    #! Drgania całkowite
    A_x = A_do1 #%requ - całkowita amplituda drgań poziomych var_A_xdop
    A_z = A_dz + A_do2 #%requ - całkowita amplituda drgań pionowych var_A_zdop

    if (A_x > A_xdop) or (A_z > A_zdop):
        None
        #! ### !! Przekroczone amplitudy drgań !!

if Lambda_fimax < omega_m:
    #!--------------------------------------------------------------------------------
    #! ### Rezonans przejśćiowy dla Lambda_fimax (drgania wahadłowe)
    omega_r = Lambda_fi #!
    omega_r / (2*math.pi) * 60.0 #%requ x [obr]
    #! Dopuśćzalne amplitudy drgań dla val_omega_r
    show = True #<<< (zobacz wykres PN)
    if show:
        #%img action_foundation_fig_3.png
        None
    A_xdop = 140.0 * u.um  #<< - poziomych
    A_zdop = 100.0 * u.um  #<< - pionowych

    P_dred = P_d * (omega_r / omega_m)**2 #%requ -siła dynamiczna dla obrotów val_omega_r
    #! Drgania pionowe
    eta_z = omega_r / (0.75 * Lambda_z) #%requ
    ni = 1 / ((1 - eta_z**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
    A_dz = P_dred / P_d * ni * A_oz   #%requ - Amplituda drgań pionowych

    #! Drgania wahadłowe
    eta_fi = omega_r / (Lambda_fi) #%requ
    ni = 1 / ((1 - eta_fi**2)**2 +  gamma**2)**0.5 #%requ - wzmocnienie
    A_do1 = P_dred / P_d * ni * A_o1   #%requ - amplituda drgań poziomych
    A_do2 = P_dred / P_d * ni * A_o2   #%requ - amplituda drgań pionowych
    #! Drgania całkowite
    A_x = A_do1 #%requ - całkowita amplituda drgań poziomych var_A_xdop
    A_z = A_dz + A_do2 #%requ - całkowita amplituda drgań pionowych var_A_zdop

    if (A_x > A_xdop) or (A_z > A_zdop):
        None
        #! ### !! Przekroczone amplitudy drgań !!

#! ---
show = True #<<< (pomocnicze - zobacz wykres wsp. dynamicznego)
if show:
    #%img action_foundation_fig_2.png
    None

Loge output report:


Fundament blokowy po wentylator

(zobacz podstawy teoretyczne)

_images/action_foundation_fig_1.pngAlt text


Dane wejściowe

Geometria fundamentu

a_f =  3.80 [m] - szerokość fundamentu

b_f =  5.20 [m] - dlugość fundamentu

h_f =  1.40 [m] - wysokość fundamentu

m_f = 58094.40 [kg] - masa fundamentu betonowego

Dane urzadzenia

m_u = 4640.00 [kg] - masa urzadzenia

n_m = 991.0 - predkość obrotowa [rpm]

n_m / 60.0  = 16.5167 - częstość w [Hz]

omega_m = 103.78 [1/s] - predkość obrotowa [rad/s]

h_u =  3.20 [m] - wysokość srodka cęźkośći maszyny wzgl. spodu fund

P_d =  1.57 [kN] - siła dynamiczna

h_s =  3.20 [m] - wysokość przyłozenia siły wzgl. spodu fundamentu

Podloże gruntowe

C_o = 18.00 [MPa/m] - dynamiczny wsp. podloża (wg. tab.1 PN)


Obliczenia

M_c = 62734.40 [kg] - masa calkowita

F = 19.76 [m2] - powierzchnia podstawy fundamentu

p = 31.75 [kPa] - nacisk statyczny na grunt

Współczynniki sztywności podłoża

C_z = 43.34 [MPa/m] - dynamiczny współczynnik podłoza

C_x = 30.34 [MPa/m] - ddynamiczny współczynnik podłoza

C_fi = 67.21 [MPa/m] - dynamiczny współczynnik podłoża

Sztywność podłoża

K_z = 856345.26 [kN/m] - sztywność kier. z

K_x = 599441.68 [kN/m] - sztywność kier. x

I_y = 23.78 [m4] - moment bezwladności podstawy

K_fi = 1598099.91 [kNm] - sztywność na obrót

z_k =  0.88 [m] - wysokość środka cięźkośći układu

Połozenie punktu kontroli drgań

zp =  3.20 [m] wysokość od podstawy fundamentu

xp =  0.00 [m] odleglość w poziomie od osi fundamentu

delta = 0.1 - błąd szacowania czestotliwości degań własnych

Kątowa częstość drgań pionowych

Lambda_z = (K_z / M_c)^0.5  = 116.83 [1/s] - w [rad/s] (czestość maszyny omega_m = 103.78 [1/s] )

Lambda_zmin = Lambda_z * (1 - delta)  = 105.15 [1/s] - dolna granica szacowanej czestotliwości

Lambda_zmax = Lambda_z * (1 + delta)  = 128.52 [1/s] - górna granica szacowanej czestotliwości

Szacowana czestość rezonansowa w przedziale 105.15 [1/s] - 128.52 [1/s]

A_oz =  1.83 [um] - przemieszczenie pionowe pod dzialaniem statycznym sily Pd

Kątowa czestość drgan wahadlowych

Lambda_fi = 85.94 [1/s] - w [rad/s] (czestość maszyny omega_m = 103.78 [1/s] )

Lambda_fimin = Lambda_fi * (1 - delta)  = 77.35 [1/s] - dolna granica szacowanej czestotliwości

Lambda_fimax = Lambda_fi * (1 + delta)  = 94.54 [1/s] - górna granica szacowanej czestotliwości

Szacowana czestość rezonansowa w przedziale 77.35 [1/s] - 94.54 [1/s]

A_o1 = 12.68 [um] - przemieszczenie poziome pod dzialaniem statycznym sily Pd

A_o2 =  0.00 [um] - przemieszczenie pionowe pod dzialaniem statycznym sily Pd

Rodzaj strojenia

Ze wzgledu na czestotliwość Lambda_z = 116.83 [1/s]

OK - Strojenie wysokie omega_m = 103.78 [1/s] < Lambda_zmin = 105.15 [1/s]

Ze wzgledu na czestotliwość Lambda_fi = 85.94 [1/s]

OK - Strojenie niskie Lambda_fimax = 94.54 [1/s] < omega_m = 103.78 [1/s]

(zobacz wykres strojenia)

_images/action_foundation_tmp_seepy_1.pngAlt text

Naprezenia pod fundamentem

p = 31.75 [kPa] - nacisk statyczny na grunt od fundamentu i maszyny

sigma_pov =  0.08 [kPa] - statyczny nacisk od sily wymuszajacej pionowo

sigma_poh =  0.40 [kPa] - statyczny nacisk od sily wymuszajacej poziomo

Amplitudy drgań

gamma = 0.13 - tłumienie gruntu


Praca na pełnych obrotach 103.78 [1/s]

Dopuśćzalne amplitudy drgań dla 103.78 [1/s]

omega_m / (2*pi) * 60.0  = 991.00 [1/s] x [obr]

(zobacz wykres PN)

_images/action_foundation_fig_3.pngAlt text

A_xdop = 110.00 [um] - poziomych

A_zdop = 70.00 [um] - pionowych

Drgania pionowe

Lambda_zmod = Lambda_zmin  = 105.15 [1/s] strojenie wysokie

eta_z = omega_m / Lambda_zmod  =  0.99 []

fundament pracuje w strefie rezonanasu

- dodatkwowo uzglednic tłumienie gamma = 0.13 (nie zalecane)

ni = 1 / ((1 - eta_z^2)^2 +  gamma^2)^0.5  =  7.54 [] - wzmocnienie

A_dz = ni * A_oz    = 13.83 [um] - Amplituda drgań pionowych

Drgania wahadłowe

Lambda_fimod = Lambda_fimax  = 94.54 [1/s] strojenie niskie

eta_fi = omega_m / Lambda_fimod  =  1.10 []

fundament pracuje w strefie rezonanasu

- dodatkwowo uzglednic tłumienie gamma = 0.13 (nie zalecane)

ni = 1 / ((1 - eta_fi^2)^2)^0.5  =  4.88 [] - wzmocnienie

A_do1 = ni * A_o1    = 61.82 [um] - amplituda drgań poziomych

A_do2 = ni * A_o2    =  0.00 [um] - amplituda drgań pionowych

Drgania całkowite

A_x = A_do1  = 61.82 [um] - całkowita amplituda drgań poziomych A_xdop = 110.00 [um]

A_z = A_dz + A_do2  = 13.83 [um] - całkowita amplituda drgań pionowych A_zdop = 70.00 [um]


Rezonans przejśćiowy dla Lambda_fimax (drgania wahadłowe)

omega_r = 85.94 [1/s]

omega_r / (2*pi) * 60.0  = 820.68 [1/s] x [obr]

Dopuśćzalne amplitudy drgań dla 85.94 [1/s]

(zobacz wykres PN)

_images/action_foundation_fig_3.pngAlt text

A_xdop = 140.00 [um] - poziomych

A_zdop = 100.00 [um] - pionowych

P_dred = P_d * (omega_r / omega_m)^2  =  1.08 [kN] -siła dynamiczna dla obrotów 85.94 [1/s]

Drgania pionowe

eta_z = omega_r / (0.75 * Lambda_z)  =  0.98 []

ni = 1 / ((1 - eta_z^2)^2 +  gamma^2)^0.5  =  7.38 [] - wzmocnienie

A_dz = P_dred / P_d * ni * A_oz    =  9.28 [um] - Amplituda drgań pionowych

Drgania wahadłowe

eta_fi = omega_r / (Lambda_fi)  =  1.00 []

ni = 1 / ((1 - eta_fi^2)^2 +  gamma^2)^0.5  =  7.69 [] - wzmocnienie

A_do1 = P_dred / P_d * ni * A_o1    = 66.89 [um] - amplituda drgań poziomych

A_do2 = P_dred / P_d * ni * A_o2    =  0.00 [um] - amplituda drgań pionowych

Drgania całkowite

A_x = A_do1  = 66.89 [um] - całkowita amplituda drgań poziomych A_xdop = 140.00 [um]

A_z = A_dz + A_do2  =  9.28 [um] - całkowita amplituda drgań pionowych A_zdop = 100.00 [um]


(pomocnicze - zobacz wykres wsp. dynamicznego)

_images/action_foundation_fig_2.pngAlt text