diff --git a/02_Presentation/documentation/codeStructure.md b/02_Presentation/documentation/codeStructure.md index 3c86ca288bba5c7a1e90339e13aca70899558ae4..f1ecee0be0b873f7785e58ffbf66e959c6840866 100644 --- a/02_Presentation/documentation/codeStructure.md +++ b/02_Presentation/documentation/codeStructure.md @@ -254,3 +254,18 @@ - Here I am able as well to accommodate for non-linear behavior - `flight.js` - physics simulation code for drone flight simulation and control + + +## Units + +- Nominal size (i.e. lattice dimension) (m) +<!-- - < Multiplier for how strongly gravity should affect this block in g (1.0 = -9.81m/s^2) --> +- Cached mass of this voxel (kg) +- mass moment of inertia (i.e. rotational "mass") (kg*m^2) + + + + + + + diff --git a/02_Presentation/robotics/tendon/portada.png b/02_Presentation/robotics/tendon/portada.png new file mode 100644 index 0000000000000000000000000000000000000000..2176991ae09075bbbbc693f6c96ce0f6453e7015 Binary files /dev/null and b/02_Presentation/robotics/tendon/portada.png differ diff --git a/02_Presentation/robotics/tendon/tendon.md b/02_Presentation/robotics/tendon/tendon.md index 2e4d52e547ab86208be69a2d27333a195c37f377..50ae664c1824b9a34ada3643f7b3d36b9c839d6c 100644 --- a/02_Presentation/robotics/tendon/tendon.md +++ b/02_Presentation/robotics/tendon/tendon.md @@ -2,21 +2,21 @@ <img src="./tendonmorph.gif" width="75%" /><br/> -How it actually works: -- the tendon applies perpendicular force on the last node, then in the middle also applies lateral forces on inner nodes -- Question: does it go through holes? -- Problem: hard to get the friction and lateral load applied + + ## Model 1 - [Demo](https://amiraa.pages.cba.mit.edu/metavoxels/01_Code/191115_NodeJsJulia/demos/indexTendonLive.html) <img src="./tendon.gif" width="75%" /><br/> +--- ## Model 2 <img src="./tendon_detailed.gif" width="75%" /><br/> + Variables to tweak: 1. Rate of tension - tension vs time @@ -25,5 +25,29 @@ Variables to tweak: 3. order which segment is in tension first 4. 25 times slower than Model 1 +### Validation Against Experimentation Results +Alfonso has the experimental test very well documented [here](https://gitlab.cba.mit.edu/alfonso/instron-opencv). + +OpenCV setup: + +<img src="./portada.png" width="75%" /><br/> + +Results after tuning the parameters: + +<img src="./val1.PNG" width="75%" /><br/> + + +--- +## Model 3 + +Chris put together a tendon model that calculated reactions at each node in the tendon path including friction in the hopes of recreating the experimental data that Alfonso acquired. The model has just one parameter, coefficient of friction, and captures the behavior of varying deflection along the beam. + + + +But the dynamic behavior seemed very off, the beam doesn't make it to equilibrium and there is a very slow compression wave that travels down the beam under initial loading. + + +--- + diff --git a/02_Presentation/robotics/tendon/val1.png b/02_Presentation/robotics/tendon/val1.png new file mode 100644 index 0000000000000000000000000000000000000000..88b36db5786b2898d92cd2f25c81681b1e97220f Binary files /dev/null and b/02_Presentation/robotics/tendon/val1.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/1.png b/02_Presentation/validationAndConvergence/dynamics/1.png new file mode 100644 index 0000000000000000000000000000000000000000..e68d0a9a29e09cd351a75b6e49c6bdc6f38310a2 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/1.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/10.png b/02_Presentation/validationAndConvergence/dynamics/10.png new file mode 100644 index 0000000000000000000000000000000000000000..41c42b19fd3e5500610c5b4427da30a8aa9f6a0f Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/10.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/40.png b/02_Presentation/validationAndConvergence/dynamics/40.png new file mode 100644 index 0000000000000000000000000000000000000000..76a25baf8962a72bab3153d861c64a527ef68528 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/40.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/40Damp.png b/02_Presentation/validationAndConvergence/dynamics/40Damp.png new file mode 100644 index 0000000000000000000000000000000000000000..99150d8363f2852c24708ddfe6f8ad1ea2310a9b Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/40Damp.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/40Dis.png b/02_Presentation/validationAndConvergence/dynamics/40Dis.png new file mode 100644 index 0000000000000000000000000000000000000000..d38ebdda2d2f0ab481f682ab265c6502fb693bb0 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/40Dis.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/40DisDamp.png b/02_Presentation/validationAndConvergence/dynamics/40DisDamp.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e821f02e5910672078eb5b41eb33944cf4eaa5 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/40DisDamp.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/5.png b/02_Presentation/validationAndConvergence/dynamics/5.png new file mode 100644 index 0000000000000000000000000000000000000000..940bfcf4e8ff16510cdbaef9df1ceb86f49dc127 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/5.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/beamMassStiffnessMatix.md b/02_Presentation/validationAndConvergence/dynamics/beamMassStiffnessMatix.md new file mode 100644 index 0000000000000000000000000000000000000000..38e60dc62755d744deecb1f8a8bcbf55044e5f8c --- /dev/null +++ b/02_Presentation/validationAndConvergence/dynamics/beamMassStiffnessMatix.md @@ -0,0 +1,5 @@ +# Euler-Bernoulli Beam Finite Element - Deriving the Mass and Stiffness Matrices + +Based on [here.](https://www.youtube.com/watch?v=K7lfyAldj5k&list=PL2ym2L69yzkaue8Ly2Oz51LALRzUV8LZ0&index=10&ab_channel=GoodVibrationswithFreeballGoodVibrationswithFreeball) + +## WIP SOON \ No newline at end of file diff --git a/02_Presentation/validationAndConvergence/dynamics/image_1.png b/02_Presentation/validationAndConvergence/dynamics/image_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1da17430a102903d3871a7459f5c38a7292511f5 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/image_1.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/image_2.png b/02_Presentation/validationAndConvergence/dynamics/image_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e73e30d71bac4c73711a9763a11c694d2660668 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/image_2.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/piecewise.png b/02_Presentation/validationAndConvergence/dynamics/piecewise.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b53d8f804b4435e4c887b2136be93d2aa6ebf4 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/piecewise.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/sol_2.png b/02_Presentation/validationAndConvergence/dynamics/sol_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d3fa0a51a865d3f5ed8c4524fe03caedd3fe61 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/sol_2.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/structuralDynamics.md b/02_Presentation/validationAndConvergence/dynamics/structuralDynamics.md new file mode 100644 index 0000000000000000000000000000000000000000..40ef586259a1cbb185083231846117e6945f0bba --- /dev/null +++ b/02_Presentation/validationAndConvergence/dynamics/structuralDynamics.md @@ -0,0 +1,128 @@ +# Structural Dynamics Validation + + +## Slender Cantilevered Beam Validation + +I first reproduced the cantilevered beam example setup by Chris [here](https://gitlab.cba.mit.edu/amiraa/metavoxels-code/-/blob/chris/dynamic_validation.md). Since a hard constraint on beam parameters is that the length/height or width ratio be > 10, he chose to use 100. Properties of the beam are as follows: + +- L = 1 m +- w = h = 0.01 m +- A = 0.0001 m^2 +- Iyy, Izz = w*h^4/12 m^4 +- Izz = w*h^4/6 m^4 +- E = 6.9e10 N/m^2 +- nu = 0.33 +- rho = 2700 kg/m^3 +- m = 2.7 kg/m +- Force (at tip)= 20 N +- 0 global and local damping + +How will we do the comparison? +- One option is to calculate the exact time solution to these unit impulsive loadings and compare pointwise through time. I added notes on how to approach this using the piecewise exact method [here.](./structuralDynamicsIntro.md) +- The other option, which may be quicker, is to extract the natural frequencies and mode shapes from the metavoxels response and comparing to analytical frequencies and mode shapes. Because MetaVoxels is matrix-free we can't solve the eigenvalue problem directly. + +I will compare against the exact analytical solution and against the euler-bernoulli beam FEM code I implemented earlier. + +#### Exact Solution: Predicted natural frequencies + +```math +Bending : wn = an^2 * \sqrt{EI/(mL^4)} \ \ , \ \ an^2 = 3.516, 22.035, 61.697 ... \\ +Axial : wn = n *pi/2 * \sqrt{EA/(mL^2)} \\ +Torsional : wn = n *pi/2 * \sqrt{GJ/(IzzL^2)} \\ +``` + +- Analytical Bending frequencies of the cantilever beam: $`[8.166, 51.178, 143.2967]`$ + +#### Euler-Bernoulli Beam FEM + +I implemented earlier an Euler-Bernoulli Beam Finite Element solver (validated against Fram3DD). My notes about the mass and stiffness matrix derivation from principle of virtual work and from the shape functions can be found [here](beamMassStiffnessMatix.md). + +For a 2D Beam, the element stiffness matrix is: +```math +\begin{bmatrix} K \end{bmatrix}= \frac{ E I}{l^3} \begin{vmatrix} +12 & 6l & -12& 6l \\\ + & 4l^2 & -6l& 2l^2\\\ + & & 12 & -6l\\\ + & & & 4l^2 \end{vmatrix} +``` +and the mass matrix is: +```math +\begin{bmatrix} M \end{bmatrix}= \frac{ \rho A l}{420} \begin{vmatrix} +156 & 22l & 54& -13l \\\ + & 4l^2 & 13l& -3l^2\\\ + & & 156 & -22l\\\ + & & & 4l^2 \end{vmatrix} +``` +After I assemble the global matrix and remove the boundary conditions, one can find the bending natural frequencies. + +```math +det[[K]-\omega^2[M]]=0 \\ +\omega=\sqrt{Eigenvalues} +``` + +- FEM Bending frequencies of the cantilever beam (10 elements): $`[8.166, 51.178, 143.333, 281.0729, 465.361]`$ + + +### MetaVoxels Results + +(Red horizontal lines are the FEM frequencies calculated in the last sections, blue lines are the fft of the x displacement of the final node). + +- 40 Elements:<br></br> +<img src="./40.PNG" width=50%><br></br> +- 10 Elements:<br></br> +<img src="./10.PNG" width=50%><br></br> +- 5 Elements:<br></br> +<img src="./5.PNG" width=50%><br></br> +- 1 Element:<br></br> +<img src="./1.PNG" width=50%><br></br> + + + +### Damping +Applying Critical damping (=1.0, local relative damping) does not seem to have an effect on the results (it just gets rid of small vibrations between neighboring nodes). + +Global Damping has a major effect on the results: + +- 40 Elements without global damping:<br></br> +<img src="./40Dis.PNG" width=50%><br></br> +- 40 Elements with 0.0001 global damping:<br></br> +<img src="./40DisDamp.PNG" width=50%><br></br> +- Natural Frequency:<br></br> +<img src="./40Damp.png" width=50%><br></br> + + + +--- + + +## Validation against voxel beam + +Chris has begun work on collecting the impulse response of a cantilevered 5x1 voxel beam. The data shown below was acquired using the microcontroller-imu setup from the voxelcopter, but the next step is setting up the laser displacement sensor for higher rate, non-contact measurement. + +<img src="./voxel_dynamic.png" width=30%><br></br> + +<img src="./voxel_time_series.png" width=50%><br></br> +<img src="./voxel_frequency.png" width=50%><br></br> + +### MetaVoxels Results + +wip. + +--- + +## Tendons + + +Details about the tendon section validation against experimental results can be found [here.](./../../robotics/tendon/tendon.md) + + + +--- + + +## Next Steps + +- Fix moments of inertia: update for large deformations based on Chris's detailed explanation [here.](https://gitlab.cba.mit.edu/amiraa/metavoxels-code/-/blob/chris/dynamic_validation.md) +- Experimentally get the damping ratio. + +--- \ No newline at end of file diff --git a/02_Presentation/validationAndConvergence/dynamics/structuralDynamicsIntro.md b/02_Presentation/validationAndConvergence/dynamics/structuralDynamicsIntro.md new file mode 100644 index 0000000000000000000000000000000000000000..57c2b623ec7e6fe782dea3a46cf934a67cb33998 --- /dev/null +++ b/02_Presentation/validationAndConvergence/dynamics/structuralDynamicsIntro.md @@ -0,0 +1,316 @@ +# Structural Dynamics Introduction + +Based on the course ["Fundamentals of Engineering Structural Dynamics with Python"](https://www.udemy.com/course/engineering-structural-dynamics-with-python). + + +---- + +## Worked Example 1: + +Consider the spring-mass-damper system below. The mass is displaced vertically by 10 mm and allowed to oscillate freely. The next oscillation peak is noted to be 7.3 mm. + +The system has the following parameters: + +<ul> + <li>Mass, $M = 150 \:kg$</li> + <li>Spring stiffness, $k = 12\times 10^3$ N/m</li> +</ul> + +<img src="./image_1.png"></img> + +Determine the following dynamic parameters: + +<ol> + <li>The natural frequency of the undamped system (in rads/sec & Hz)</li> + <li>The oscillation period of the undamped system</li> +<li>The logarithmic decrement</li> + <li>The damping ratio</li> + <li>The damping coefficient</li> + <li>The damped natural frequency (in rads/sec)</li> +</ol> +<hr> + +``` python +m = 150 # (kg) Mass +k = 12*10**3 # (N/m) Stiffness +u1 = 10 # (mm) Peak 1 +u2 = 7.3 # (mm) Peak 2 +``` + +### 1. Natural Frequency, $`\omega_n`$ & $`f_n`$ + +```math +\omega_n = \sqrt{\frac{k}{m}} \\ +f_n = \frac{\omega_n}{2\pi} +``` + +```python +# Natural frequency and period +omega_n = round(math.sqrt(k/m),3) # (rads/sec) Angular natural frequency +fn = round(omega_n/(2*math.pi),3) # (Hz) Natural frequency +``` +### 2. The oscillation Period, $`T`$ +```math +T=\frac{1}{f_n} +``` + +```python +T = round(1/fn,2) +``` + +### 3. Logarithmic decrement, $`\delta`$ +```math +\delta = \ln{\frac{U_n}{U_{n+1}}} +``` +```python +delta = round(np.log(u1/u2),3) +``` + +### 4. Damping ratio, $`\xi`$ +```math +\xi \approx \frac{\delta}{2\pi} +``` +```python +xi = round(delta/(2*math.pi),3) +``` + +### 5. Damping coefficient, $`c`$ +```math +c = 2\xi m \omega_n +``` + +```python +c = round(xi*2*m*omega_n,2) +``` + +### 6. Damped natural frequency, $\omega_d``$ + + +```math +\omega_d = \omega_n\sqrt{1-\xi^2} +``` +```python +c = round(xi*2*m*omega_n,2) +``` +```python +omega_d = round(omega_n*math.sqrt(1-(xi**2)),3) +``` + +1. (a) The angular natural frequency is 8.944 radians per second +1. (b) The natural frequency is 1.423 Hz +2. The period is 0.7 seconds +3. The logarithmic decrement is 0.315 +4. The damping ratio is 0.05 or 5.0 percent of critical damping +5. The damping coefficient is 134.16 Ns/m +6. The damp natural frequency is 8.933 radians per second +---- + + + +## Worked Example 2: + +Consider the lightweight steel frame structure shown below. It supports heavy machinery with a total mass of $`m = 10,000\: kg`$. We can neglect the weight of the steel frame. Based on an experimental impact test, the inherent structural damping has been estimated to be 2% ($`\xi=0.02`$). + +A load test has shown that a lateral force of $`P=1500\: N`$ induces a lateral displacement of $`\Delta = 7 \:mm`$. + +The steel frame is constrained such that it can only move laterally (i.e. there is no twisting or significant vertical movement). As such it can be modelled as a SDoF system as shown on the right. + +<img src="./image_2.png"></img> + +With this information, determine the following: +<ol> + <li>The undamped natural frequency</li> + <li>The damping coefficient</li> + <li>The logarithmic decrement</li> + <li>The damped angular natural frequency</li> + <li>The number of cycles for the amplitude to reduce to 0.001 m</li> + <li>Plot the free vibration response, assuming the structure was released from its initial displacement of 7 mm</li> +</ol> + +```python +# Constants +m = 10000 # (kg) Mass +xi = 0.02 # Damping ratio +P = 1500 # (N) Static force magnitude +Delta = 7 # (mm) Static displacement +``` + +### 1. Undamped natural frequency, $\omega_n$ & $f_n$ +```python +# Undamped natural frequency +k = P/(Delta/1000) #(N/m) Stiffness +omega_n = round(math.sqrt(k/m),3) #(rads/sec) Angular natural frequency +fn = round(omega_n/(2*math.pi),3) # (Hz) Natural frequency +T = round(1/fn,2) # (sec) Period of oscillation +``` + +1. The angular natural frequency is 4.629 radians per second or 0.737 Hz with a period of 1.36 seconds +2. The damping coefficient is 1851.6 Ns/m +3. The logarithmic decrement is 0.126 +4. The damped angular natural frequency is 4.628 radians per second + +### 5. Number of oscillations before amplitude reduces to $0.001$ m + +Pood that it will be logarithmic decrements: +```math +\frac{u_1}{u_n}= \frac{u_1}{u_2}*\frac{u_2}{u_3}*..\frac{u_{n-1}}{u_n} \\ +ln(\frac{u_1}{u_n})=\delta+\delta+...+\delta=n \delta +``` +u_start = 0.007 +u_finish = 0.001 +n = math.log(u_start/u_finish)/delta +n_full = math.ceil(n) +t_full = T*n_full + +print("5.0 It takes {one} complete cycles and {two} seconds for the oscillation amplitude to reduce to {three} mm".format(one=n_full, two=t_full, three=u_finish)) + +5. It takes 16 complete cycles and 21.76 seconds for the oscillation amplitude to reduce to 0.001 mm + +### 6. Free vibration response +```math +u(t) = e^{-\xi\omega_n t}[A \sin(\omega_d t) + B\cos(\omega_d t) ] +``` + +#### Initial conditions + +```math +u(t=0) = 0.007 \:\text{m}\\ +\dot{u}(t=0) = 0 \:\text{m/s} +``` + +Need to differentiate $`u(t)`$ to get expression for $`\dot{u}(t)`$... + +```math +\dot{u}(t) = A\left[e^{-\xi\omega_nt}\omega_d\cos(\omega_dt) - \sin(\omega_dt)\: \xi\omega_n \: e^{-\xi\omega_nt}\right] + B\left[-e^{-\xi\omega_nt}\omega_d\sin(\omega_dt) - \cos(\omega_dt)\:\xi\omega_n\:e^{-\xi\omega_nt} \right] +``` + +Sub initial conditions into equations for $`u(t)`$ and $`\dot{u}(t)`$ to determine A and B + +```math +A = 0.00014\\ +B = 0.007 +``` + +Therefore the free vibration response is given by, + +```math +u(t) = e^{-\xi\omega_n t}[0.00014\: \sin(\omega_d t) + 0.007\:\cos(\omega_d t)] +``` + +The plot: + +<img src="./sol_2.png"></img> + + +---- + +## Piecewise Exact Method + +### Development +Consider a force, $`p(t)`$ (a) and its piecewise linear representation between $`t_n`$ and $`t_{n+1}`$ (c), + +<img src="./piecewise.png"></img> + +If the duration $`t_{n+1}-t_{n}`$ is sufficiently small, the error introduced by the linear approximation is negligibly small. The force can be represented as a function of time over the interval, + +```math +p(\tau) = \overbrace{p_n}^{\text{initial value}} + \overbrace{\frac{p_{n+1}-p_n}{h}\tau}^{\text{linearly varying}} +``` + +The equation of motion describing the behaviour of the system is therefore, + +```math +m\ddot{u} + c\dot{u} + ku = p_n + \frac{p_{n+1}-p_n}{h}\tau +``` + +We can determine an analytical solution to this equation of motion using superposition (remember linear analysis assumed over the duration of a timestep). The complete solution consists of three components: + +- the free vibration component with initial position $u_n$ and velocity $`\dot{u}_n`$ at $`t_n`$ +- the component due to a constant force of magnitude $p_n$ +- the component due to the linearly varying component of force, +```math +\frac{p_{n+1}-p_n}{h}\tau +``` + +The solution to the differential equation describing each of the three components of response can be obtained by using the same procedures demonstrated previously in this course (solving to find homogeneous and complimentary solutions to the various equations of motion). For brevity we will simply state the solutions here rather than deriving each. + +The free vibration response is given by, + +```math +u_1 = e^{-\xi\omega_n\tau}\left[u_0\cos(\omega_d\tau) + \frac{\dot{u}_0 + \xi\omega_nu_0}{\omega_d}\sin(\omega_d\tau) \right] +``` + +The response due to constant force magnitude is given by, + +```math +u_2 = \frac{p_n}{k}\left[1-e^{-\xi\omega_n\tau} \left(\cos(\omega_d\tau) + \frac{\xi\omega_n}{\omega_d} \sin(\omega_d\tau) \right) \right] +``` + +Finally the linearly varying force response is given by, + +```math +u_3 = \frac{p_{n+1}-p_n}{k}\left[\tau - \frac{2\xi}{\omega_n} + e^{-\xi\omega_n\tau} \left(\frac{2\xi^2-1}{\omega_d}\sin(\omega_d\tau) + \frac{2\xi}{\omega_n} \cos(\omega_d\tau) \right) \right] +``` + +The system position at the end of a timestep can be determined by superimposing $`u_1, u_2`$ and $`u_3`$. We could determine the velocity by simply differentiating these expressions. + +In principle, with knowledge of our the system's initial position, velocity and applied force, we could 'step' our way through each timestep to determine the system position and velocity at any time in the future. + +### Computational Scheme +In order to implement this concept in a simple time-stepping algorithm, we'll first restructure the equations to make them more 'algorithm friendly'. I've used the formulation presented by [Humar]. You can optionally refer to that text for more on this but everything you need to implement this technique is presented here. + +If we differentiate expressions for $`u_1, u_2`$ and $`u_3`$ we can state the following expressions for the position and velocity at the end of a timestep as, + +```math +u_{n+1} = A\:u_n + B\:\dot{u}_{n} +C\:p_n + D\:p_{n+1} +``` + +```math +\dot{u}_{n+1} = A_1\:u_n + B_1\:\dot{u}_n + C_1\:p_n + D_1\:p_{n+1} +``` + +where the constants $A$ to $D_1$ are given by (take a deep breath!)... + +```math +A = e^{-\xi\omega_nh}\left[\frac{\xi}{\sqrt{1-\xi^2}}\sin(\omega_dh) + \cos(\omega_dh) \right] +``` + +```math +B=e^{-\xi\omega_nh}\left[\frac{1}{\omega_d}\sin(\omega_dh) \right] +``` + +```math +C=\frac{1}{k}\left[\frac{2\xi}{\omega_nh} + e^{-\xi\omega_nh}\left(\left(\frac{1-2\xi^2}{\omega_dh} - \frac{\xi}{\sqrt{1-\xi^2}} \right)\sin(\omega_dh)-\left(1+\frac{2\xi}{\omega_n h} \right)\cos(\omega_dh)\right) \right] +``` + +```math +D=\frac{1}{k}\left[1-\frac{2\xi}{\omega_nh}+e^{-\xi\omega_nh}\left(\frac{2\xi^2-1}{\omega_dh}\sin(\omega_dh) + \frac{2\xi}{\omega_nh}\cos(\omega_dh) \right) \right] +``` + +```math +A_1=-e^{-\xi\omega_nh}\left[\frac{\omega_n}{\sqrt{1-\xi^2}}\sin(\omega_dh) \right] +``` + +```math +B_1=e^{-\xi\omega_nh}\left[\cos(\omega_dh)-\frac{\xi}{\sqrt{1-\xi^2}}\sin(\omega_dh) \right] +``` + +```math +C_1=\frac{1}{k}\left[-\frac{1}{h} + e^{-\xi\omega_nh}\left(\left(\frac{\omega_n}{\sqrt{1-\xi^2}} + \frac{\xi}{h\sqrt{1-\xi^2}} \right)\sin(\omega_dh) +\frac{1}{h}\cos(\omega_d h) \right) \right] +``` + +```math +D_1=\frac{1}{k}\left[\frac{1}{h} - \frac{e^{-\xi\omega_nh}}{h} \left(\frac{\xi}{\sqrt{1-\xi^2}}\sin(\omega_dh)+\cos(\omega_dh) \right)\right] +``` + +Notice that constants A to D1 are just that, constants. Therefore they can be calculated once at the outset of our solution and then swiftly left alone! + +Although these expressions appear exceptionally complex. It's important to remember that fundamentally all we have done is implement the same procedures you are familiar with from the analysis of harmonic loading. + +It's also worth remembering that the purpose of our work here is to develop a set of equations that is suitable for implementation in a computer algorithm. As such it is not expected that you would manually process these equations to determine the step-by-step response of the structure. + +### Reference +Humar, J.L., Dynamics of Structures, 2nd Edition + + +--- \ No newline at end of file diff --git a/02_Presentation/validationAndConvergence/dynamics/voxel_dynamic.png b/02_Presentation/validationAndConvergence/dynamics/voxel_dynamic.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b8239067636f5bec26fd1affacb65ff67d8d69 Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/voxel_dynamic.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/voxel_frequency.png b/02_Presentation/validationAndConvergence/dynamics/voxel_frequency.png new file mode 100644 index 0000000000000000000000000000000000000000..90fafcec14c7e477bd0ac47687110fe8dd7fc90f Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/voxel_frequency.png differ diff --git a/02_Presentation/validationAndConvergence/dynamics/voxel_time_series.png b/02_Presentation/validationAndConvergence/dynamics/voxel_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..aac5705785a28518a399ce32fa10e07f3cf4c20d Binary files /dev/null and b/02_Presentation/validationAndConvergence/dynamics/voxel_time_series.png differ diff --git a/02_Presentation/validationAndConvergence/validationAndConvergenceStudies.md b/02_Presentation/validationAndConvergence/validationAndConvergenceStudies.md index 8b31ef722ecbcb3dc2e810fbc722bc2f9f0449b8..b6f2d60f80dfd754124367e0cd69a2a7dabc75c7 100644 --- a/02_Presentation/validationAndConvergence/validationAndConvergenceStudies.md +++ b/02_Presentation/validationAndConvergence/validationAndConvergenceStudies.md @@ -1,8 +1,6 @@ # Validation and Convergence -### Dynamic Model Convergence Studies: - -<!--  --> +## Static Convergence Studies: <img src="./dyn_conv.gif" width="300" /> @@ -53,7 +51,7 @@ The youngs modulus of the converged dynamic model and static fea model are perfe  -### Validation and Comparison: +### Validation and Comparison against Experimental data: In order to validate the simulation results, I compared it to [voxframe](https://gitlab.cba.mit.edu/ccameron/voxframe/-/tree/master) simulation results (based on [Frame3DD](http://frame3dd.sourceforge.net/)).My results perfectly fit the voxframe results given the same physical parameters and loading conditions. @@ -63,23 +61,10 @@ They both were though modeled using a single beam instead of double beams like i ------- -# New notes - -## Static - -Main parameters to tweak/balance: -- [x] dt: - - [automatically calculated](https://amiraa.pages.cba.mit.edu/metavoxels/03_Research/structureModel.html) from stiffness and mass - - [ ] the damping factor && total number of time steps - - [ ] how to calculate them from load added, scale and depth of the structure - - if damping factor is small simulation is faster but some inaccuracies - - if damping factor big takes more time to converge more accurate - -## Dynamic Modeling +## Structural Dynamics Validation -Main parameters to tweak: - - damping factor and load timing - +More Details [here.](dynamics/structuralDynamics.md) +---