Compare commits

...

4 Commits

Author SHA1 Message Date
6e0304c0b3 Grammar check 2024-10-24 19:33:24 +02:00
12f4934efc Rework just before grammar check 2024-10-24 18:53:51 +02:00
09e101fb75 Rework the full document once 2024-10-24 17:42:18 +02:00
3fa9d30e57 Start re-check 2024-10-24 09:50:55 +02:00
37 changed files with 2434 additions and 1911 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,199 +1,187 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="225.576" height="174.643" viewBox="0 0 225.576 174.643">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="174.219" height="173.715" viewBox="0 0 174.219 173.715">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 4.390625 -2.484375 C 4.390625 -3.546875 3.515625 -4.40625 2.484375 -4.40625 C 1.40625 -4.40625 0.5625 -3.515625 0.5625 -2.484375 C 0.5625 -1.421875 1.421875 -0.5625 2.46875 -0.5625 C 3.546875 -0.5625 4.390625 -1.4375 4.390625 -2.484375 Z M 4.390625 -2.484375 "/>
</g>
<g id="glyph-0-1">
<path d="M 4.40625 -2.484375 C 4.40625 -3.546875 3.53125 -4.40625 2.484375 -4.40625 C 1.40625 -4.40625 0.5625 -3.53125 0.5625 -2.484375 C 0.5625 -1.421875 1.4375 -0.5625 2.46875 -0.5625 C 3.5625 -0.5625 4.40625 -1.4375 4.40625 -2.484375 Z M 4.40625 -2.484375 "/>
<path d="M 4.234375 2.375 C 4.234375 2.265625 4.171875 2.265625 4.078125 2.265625 C 3.296875 2.21875 2.921875 1.765625 2.84375 1.40625 C 2.8125 1.296875 2.8125 1.28125 2.8125 0.9375 L 2.8125 -0.5625 C 2.8125 -0.859375 2.8125 -1.359375 2.78125 -1.453125 C 2.65625 -2.109375 2.03125 -2.375 1.640625 -2.484375 C 2.8125 -2.8125 2.8125 -3.515625 2.8125 -3.796875 L 2.8125 -5.59375 C 2.8125 -6.296875 2.8125 -6.515625 3.046875 -6.765625 C 3.21875 -6.9375 3.453125 -7.1875 4.140625 -7.21875 C 4.203125 -7.234375 4.234375 -7.265625 4.234375 -7.328125 C 4.234375 -7.4375 4.15625 -7.4375 4.03125 -7.4375 C 3.046875 -7.4375 2.15625 -6.9375 2.140625 -6.21875 L 2.140625 -4.40625 C 2.140625 -3.46875 2.140625 -3.3125 1.890625 -3.03125 C 1.75 -2.890625 1.484375 -2.625 0.859375 -2.59375 C 0.78125 -2.59375 0.71875 -2.578125 0.71875 -2.484375 C 0.71875 -2.375 0.78125 -2.375 0.875 -2.375 C 1.296875 -2.34375 2.140625 -2.140625 2.140625 -1.140625 L 2.140625 0.828125 C 2.140625 1.40625 2.140625 1.734375 2.65625 2.109375 C 3.078125 2.40625 3.734375 2.484375 4.03125 2.484375 C 4.15625 2.484375 4.234375 2.484375 4.234375 2.375 Z M 4.234375 2.375 "/>
</g>
<g id="glyph-0-2">
<path d="M 4.25 2.375 C 4.25 2.28125 4.1875 2.28125 4.078125 2.265625 C 3.296875 2.21875 2.9375 1.765625 2.84375 1.40625 C 2.8125 1.296875 2.8125 1.28125 2.8125 0.9375 L 2.8125 -0.5625 C 2.8125 -0.859375 2.8125 -1.359375 2.796875 -1.453125 C 2.65625 -2.109375 2.03125 -2.375 1.640625 -2.484375 C 2.8125 -2.828125 2.8125 -3.53125 2.8125 -3.8125 L 2.8125 -5.59375 C 2.8125 -6.3125 2.8125 -6.53125 3.046875 -6.78125 C 3.234375 -6.953125 3.453125 -7.1875 4.15625 -7.234375 C 4.203125 -7.25 4.25 -7.28125 4.25 -7.34375 C 4.25 -7.453125 4.15625 -7.453125 4.046875 -7.453125 C 3.046875 -7.453125 2.171875 -6.953125 2.140625 -6.234375 L 2.140625 -4.40625 C 2.140625 -3.484375 2.140625 -3.3125 1.890625 -3.046875 C 1.75 -2.90625 1.484375 -2.640625 0.859375 -2.59375 C 0.78125 -2.59375 0.71875 -2.578125 0.71875 -2.484375 C 0.71875 -2.390625 0.78125 -2.390625 0.875 -2.375 C 1.296875 -2.34375 2.140625 -2.140625 2.140625 -1.140625 L 2.140625 0.828125 C 2.140625 1.40625 2.140625 1.734375 2.65625 2.109375 C 3.09375 2.40625 3.734375 2.484375 4.046875 2.484375 C 4.15625 2.484375 4.25 2.484375 4.25 2.375 Z M 4.25 2.375 "/>
</g>
<g id="glyph-0-3">
<path d="M 4.25 -2.484375 C 4.25 -2.578125 4.1875 -2.578125 4.078125 -2.59375 C 3.65625 -2.625 2.8125 -2.828125 2.8125 -3.828125 L 2.8125 -5.796875 C 2.8125 -6.375 2.8125 -6.703125 2.296875 -7.078125 C 1.875 -7.359375 1.234375 -7.453125 0.921875 -7.453125 C 0.8125 -7.453125 0.71875 -7.453125 0.71875 -7.34375 C 0.71875 -7.25 0.78125 -7.25 0.875 -7.234375 C 1.65625 -7.1875 2.03125 -6.734375 2.109375 -6.375 C 2.140625 -6.265625 2.140625 -6.25 2.140625 -5.90625 L 2.140625 -4.40625 C 2.140625 -4.109375 2.140625 -3.609375 2.171875 -3.515625 C 2.296875 -2.859375 2.9375 -2.59375 3.3125 -2.484375 C 2.140625 -2.140625 2.140625 -1.4375 2.140625 -1.15625 L 2.140625 0.625 C 2.140625 1.34375 2.140625 1.5625 1.90625 1.8125 C 1.734375 1.984375 1.5 2.21875 0.8125 2.265625 C 0.75 2.28125 0.71875 2.3125 0.71875 2.375 C 0.71875 2.484375 0.8125 2.484375 0.921875 2.484375 C 1.90625 2.484375 2.796875 1.984375 2.8125 1.265625 L 2.8125 -0.5625 C 2.8125 -1.484375 2.8125 -1.65625 3.078125 -1.921875 C 3.203125 -2.0625 3.484375 -2.328125 4.109375 -2.375 C 4.171875 -2.375 4.25 -2.390625 4.25 -2.484375 Z M 4.25 -2.484375 "/>
<path d="M 4.234375 -2.484375 C 4.234375 -2.578125 4.171875 -2.578125 4.078125 -2.59375 C 3.65625 -2.625 2.8125 -2.828125 2.8125 -3.8125 L 2.8125 -5.78125 C 2.8125 -6.359375 2.8125 -6.703125 2.296875 -7.0625 C 1.859375 -7.359375 1.234375 -7.4375 0.90625 -7.4375 C 0.8125 -7.4375 0.71875 -7.4375 0.71875 -7.328125 C 0.71875 -7.234375 0.78125 -7.234375 0.875 -7.21875 C 1.65625 -7.171875 2.03125 -6.734375 2.109375 -6.375 C 2.140625 -6.265625 2.140625 -6.234375 2.140625 -5.890625 L 2.140625 -4.40625 C 2.140625 -4.109375 2.140625 -3.609375 2.15625 -3.5 C 2.296875 -2.84375 2.921875 -2.59375 3.3125 -2.484375 C 2.140625 -2.140625 2.140625 -1.4375 2.140625 -1.15625 L 2.140625 0.625 C 2.140625 1.34375 2.140625 1.5625 1.90625 1.8125 C 1.71875 1.984375 1.5 2.21875 0.796875 2.265625 C 0.75 2.265625 0.71875 2.3125 0.71875 2.375 C 0.71875 2.484375 0.8125 2.484375 0.90625 2.484375 C 1.90625 2.484375 2.78125 1.96875 2.8125 1.265625 L 2.8125 -0.5625 C 2.8125 -1.484375 2.8125 -1.640625 3.0625 -1.921875 C 3.203125 -2.0625 3.46875 -2.328125 4.09375 -2.375 C 4.171875 -2.375 4.234375 -2.375 4.234375 -2.484375 Z M 4.234375 -2.484375 "/>
</g>
<g id="glyph-1-0">
<path d="M 4.921875 -1.421875 C 4.921875 -1.515625 4.828125 -1.515625 4.796875 -1.515625 C 4.71875 -1.515625 4.6875 -1.484375 4.671875 -1.40625 C 4.34375 -0.34375 3.671875 -0.109375 3.359375 -0.109375 C 2.96875 -0.109375 2.8125 -0.421875 2.8125 -0.765625 C 2.8125 -0.984375 2.875 -1.203125 2.96875 -1.640625 L 3.3125 -3 C 3.375 -3.25 3.609375 -4.171875 4.296875 -4.171875 C 4.34375 -4.171875 4.578125 -4.171875 4.796875 -4.03125 C 4.515625 -3.984375 4.3125 -3.734375 4.3125 -3.5 C 4.3125 -3.34375 4.421875 -3.15625 4.6875 -3.15625 C 4.90625 -3.15625 5.234375 -3.328125 5.234375 -3.734375 C 5.234375 -4.25 4.640625 -4.390625 4.3125 -4.390625 C 3.734375 -4.390625 3.390625 -3.859375 3.265625 -3.625 C 3.015625 -4.28125 2.484375 -4.390625 2.1875 -4.390625 C 1.15625 -4.390625 0.59375 -3.109375 0.59375 -2.859375 C 0.59375 -2.765625 0.71875 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.78125 0.84375 -2.875 C 1.1875 -3.921875 1.828125 -4.171875 2.171875 -4.171875 C 2.359375 -4.171875 2.703125 -4.078125 2.703125 -3.5 C 2.703125 -3.1875 2.546875 -2.53125 2.171875 -1.140625 C 2.015625 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.9375 -0.109375 0.734375 -0.234375 C 0.984375 -0.28125 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.828125 -1.125 C 0.53125 -1.125 0.28125 -0.859375 0.28125 -0.546875 C 0.28125 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.875 0.109375 2.234375 -0.578125 2.265625 -0.640625 C 2.375 -0.28125 2.734375 0.109375 3.328125 0.109375 C 4.359375 0.109375 4.921875 -1.171875 4.921875 -1.421875 Z M 4.921875 -1.421875 "/>
</g>
<g id="glyph-1-1">
<path d="M 4.921875 -1.421875 C 4.921875 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.484375 4.6875 -1.40625 C 4.359375 -0.34375 3.671875 -0.109375 3.359375 -0.109375 C 2.96875 -0.109375 2.8125 -0.421875 2.8125 -0.765625 C 2.8125 -0.984375 2.875 -1.203125 2.984375 -1.640625 L 3.3125 -3 C 3.375 -3.265625 3.609375 -4.171875 4.296875 -4.171875 C 4.359375 -4.171875 4.59375 -4.171875 4.796875 -4.046875 C 4.515625 -4 4.328125 -3.75 4.328125 -3.515625 C 4.328125 -3.34375 4.4375 -3.15625 4.703125 -3.15625 C 4.921875 -3.15625 5.234375 -3.34375 5.234375 -3.734375 C 5.234375 -4.25 4.65625 -4.390625 4.3125 -4.390625 C 3.734375 -4.390625 3.390625 -3.859375 3.265625 -3.640625 C 3.015625 -4.296875 2.484375 -4.390625 2.203125 -4.390625 C 1.15625 -4.390625 0.59375 -3.109375 0.59375 -2.859375 C 0.59375 -2.765625 0.71875 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.78125 0.84375 -2.875 C 1.1875 -3.921875 1.84375 -4.171875 2.171875 -4.171875 C 2.359375 -4.171875 2.71875 -4.078125 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.53125 2.171875 -1.140625 C 2.015625 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.9375 -0.109375 0.734375 -0.234375 C 0.984375 -0.28125 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.828125 -1.125 C 0.53125 -1.125 0.28125 -0.859375 0.28125 -0.546875 C 0.28125 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.875 0.109375 2.234375 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.359375 0.109375 4.921875 -1.171875 4.921875 -1.421875 Z M 4.921875 -1.421875 "/>
<path d="M 4.828125 -3.78125 C 4.859375 -3.921875 4.859375 -3.9375 4.859375 -4.015625 C 4.859375 -4.1875 4.71875 -4.28125 4.578125 -4.28125 C 4.46875 -4.28125 4.3125 -4.21875 4.234375 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.09375 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.40625 -0.796875 2.96875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.109375 1.078125 -1.53125 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.671875 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.875 0.015625 Z M 4.828125 -3.78125 "/>
</g>
<g id="glyph-1-2">
<path d="M 4.828125 -3.78125 C 4.875 -3.921875 4.875 -3.9375 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.484375 -4.28125 4.328125 -4.21875 4.234375 -4.078125 C 4.21875 -4.03125 4.140625 -3.71875 4.09375 -3.53125 L 3.890625 -2.75 L 3.453125 -0.953125 C 3.40625 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.921875 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.421875 -3.375 2.421875 -3.578125 C 2.421875 -4.03125 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.171875 1.8125 -3.859375 C 1.8125 -3.609375 1.71875 -3.34375 1.65625 -3.15625 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.15625 0.171875 3.046875 0.671875 2.640625 1.1875 C 2.390625 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.328125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.578125 2.03125 3.59375 1.140625 3.875 0.015625 Z M 4.828125 -3.78125 "/>
<path d="M 4.3125 -1.421875 C 4.3125 -1.46875 4.28125 -1.515625 4.203125 -1.515625 C 4.109375 -1.515625 4.09375 -1.453125 4.0625 -1.390625 C 3.828125 -0.75 3.1875 -0.5625 2.875 -0.5625 C 2.671875 -0.5625 2.484375 -0.609375 2.28125 -0.6875 C 1.9375 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.59375 -0.859375 1.40625 -0.859375 1.3125 -0.828125 C 1.859375 -1.40625 2.140625 -1.640625 2.5 -1.953125 C 2.5 -1.953125 3.109375 -2.484375 3.46875 -2.84375 C 4.421875 -3.765625 4.640625 -4.25 4.640625 -4.28125 C 4.640625 -4.390625 4.53125 -4.390625 4.53125 -4.390625 C 4.453125 -4.390625 4.421875 -4.359375 4.375 -4.28125 C 4.078125 -3.796875 3.875 -3.640625 3.625 -3.640625 C 3.390625 -3.640625 3.28125 -3.796875 3.125 -3.953125 C 2.9375 -4.1875 2.765625 -4.390625 2.4375 -4.390625 C 1.703125 -4.390625 1.234375 -3.46875 1.234375 -3.25 C 1.234375 -3.203125 1.265625 -3.140625 1.359375 -3.140625 C 1.453125 -3.140625 1.46875 -3.1875 1.484375 -3.25 C 1.671875 -3.703125 2.25 -3.71875 2.328125 -3.71875 C 2.546875 -3.71875 2.734375 -3.65625 2.953125 -3.578125 C 3.359375 -3.421875 3.46875 -3.421875 3.71875 -3.421875 C 3.359375 -3 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.359375 1.234375 -0.640625 1.546875 -0.640625 C 1.78125 -0.640625 1.875 -0.546875 2.125 -0.265625 C 2.296875 -0.046875 2.46875 0.109375 2.765625 0.109375 C 3.734375 0.109375 4.3125 -1.15625 4.3125 -1.421875 Z M 4.3125 -1.421875 "/>
</g>
<g id="glyph-1-3">
<path d="M 4.328125 -1.421875 C 4.328125 -1.46875 4.28125 -1.515625 4.203125 -1.515625 C 4.109375 -1.515625 4.09375 -1.453125 4.0625 -1.390625 C 3.828125 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.671875 -0.5625 2.5 -0.609375 2.28125 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.59375 -0.859375 1.40625 -0.859375 1.328125 -0.828125 C 1.859375 -1.40625 2.140625 -1.65625 2.5 -1.953125 C 2.5 -1.953125 3.125 -2.5 3.484375 -2.859375 C 4.421875 -3.78125 4.640625 -4.25 4.640625 -4.296875 C 4.640625 -4.390625 4.53125 -4.390625 4.53125 -4.390625 C 4.46875 -4.390625 4.4375 -4.375 4.375 -4.28125 C 4.078125 -3.8125 3.875 -3.640625 3.640625 -3.640625 C 3.40625 -3.640625 3.28125 -3.796875 3.125 -3.96875 C 2.9375 -4.1875 2.765625 -4.390625 2.4375 -4.390625 C 1.703125 -4.390625 1.25 -3.46875 1.25 -3.265625 C 1.25 -3.203125 1.265625 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.484375 -3.265625 C 1.671875 -3.71875 2.25 -3.734375 2.328125 -3.734375 C 2.546875 -3.734375 2.734375 -3.65625 2.96875 -3.578125 C 3.359375 -3.421875 3.46875 -3.421875 3.734375 -3.421875 C 3.375 -3 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.546875 -0.640625 C 1.78125 -0.640625 1.875 -0.546875 2.125 -0.265625 C 2.296875 -0.046875 2.46875 0.109375 2.765625 0.109375 C 3.75 0.109375 4.328125 -1.15625 4.328125 -1.421875 Z M 4.328125 -1.421875 "/>
<path d="M 7.34375 -4.328125 C 7.34375 -5.921875 6.296875 -7 4.8125 -7 C 2.671875 -7 0.484375 -4.75 0.484375 -2.4375 C 0.484375 -0.78125 1.59375 0.21875 3.03125 0.21875 C 5.125 0.21875 7.34375 -1.953125 7.34375 -4.328125 Z M 6.453125 -4.71875 C 6.453125 -4 6.1875 -2.453125 5.203125 -1.234375 C 4.734375 -0.625 3.921875 -0.046875 3.078125 -0.046875 C 2.109375 -0.046875 1.40625 -0.84375 1.40625 -2.15625 C 1.40625 -2.59375 1.546875 -4.03125 2.3125 -5.203125 C 3 -6.234375 3.96875 -6.75 4.75 -6.75 C 5.5625 -6.75 6.453125 -6.1875 6.453125 -4.71875 Z M 6.453125 -4.71875 "/>
</g>
<g id="glyph-1-4">
<path d="M 7.359375 -4.328125 C 7.359375 -5.9375 6.296875 -7 4.8125 -7 C 2.671875 -7 0.484375 -4.75 0.484375 -2.4375 C 0.484375 -0.78125 1.59375 0.21875 3.03125 0.21875 C 5.140625 0.21875 7.359375 -1.953125 7.359375 -4.328125 Z M 6.46875 -4.71875 C 6.46875 -4 6.203125 -2.453125 5.21875 -1.234375 C 4.734375 -0.625 3.921875 -0.046875 3.09375 -0.046875 C 2.109375 -0.046875 1.40625 -0.84375 1.40625 -2.15625 C 1.40625 -2.59375 1.546875 -4.046875 2.3125 -5.203125 C 3 -6.234375 3.96875 -6.75 4.765625 -6.75 C 5.578125 -6.75 6.46875 -6.203125 6.46875 -4.71875 Z M 6.46875 -4.71875 "/>
<path d="M 6.203125 -6.109375 C 6.203125 -6.203125 6.125 -6.25 6.0625 -6.296875 C 5.84375 -6.453125 5.734375 -6.625 5.65625 -6.859375 C 5.640625 -6.953125 5.59375 -7.078125 5.453125 -7.078125 C 5.3125 -7.078125 5.265625 -6.953125 5.265625 -6.875 C 5.265625 -6.828125 5.34375 -6.515625 5.5 -6.296875 L 2.15625 -6.296875 C 1.984375 -6.296875 1.8125 -6.296875 1.8125 -6.109375 C 1.8125 -5.90625 1.984375 -5.90625 2.15625 -5.90625 L 5.328125 -5.90625 C 5.1875 -5.78125 4.859375 -5.5 4.859375 -5.3125 C 4.859375 -5.21875 4.953125 -5.125 5.0625 -5.125 C 5.15625 -5.125 5.203125 -5.1875 5.25 -5.25 C 5.375 -5.390625 5.59375 -5.671875 6.03125 -5.890625 C 6.109375 -5.9375 6.203125 -5.984375 6.203125 -6.109375 Z M 6.203125 -6.109375 "/>
</g>
<g id="glyph-1-5">
<path d="M 6.21875 -6.109375 C 6.21875 -6.21875 6.140625 -6.265625 6.078125 -6.3125 C 5.859375 -6.453125 5.75 -6.640625 5.671875 -6.875 C 5.640625 -6.96875 5.609375 -7.09375 5.46875 -7.09375 C 5.328125 -7.09375 5.265625 -6.96875 5.265625 -6.890625 C 5.265625 -6.84375 5.34375 -6.515625 5.5 -6.3125 L 2.15625 -6.3125 C 1.984375 -6.3125 1.8125 -6.3125 1.8125 -6.109375 C 1.8125 -5.90625 1.984375 -5.90625 2.15625 -5.90625 L 5.34375 -5.90625 C 5.203125 -5.78125 4.875 -5.5 4.875 -5.328125 C 4.875 -5.234375 4.96875 -5.125 5.0625 -5.125 C 5.15625 -5.125 5.203125 -5.203125 5.25 -5.25 C 5.375 -5.40625 5.609375 -5.6875 6.046875 -5.90625 C 6.109375 -5.9375 6.21875 -6 6.21875 -6.109375 Z M 6.21875 -6.109375 "/>
<path d="M 4.859375 -2.796875 C 4.859375 -3.734375 4.296875 -4.390625 3.546875 -4.390625 C 3.046875 -4.390625 2.5625 -4.03125 2.25 -3.640625 C 2.140625 -4.171875 1.71875 -4.390625 1.34375 -4.390625 C 0.890625 -4.390625 0.703125 -4 0.609375 -3.8125 C 0.4375 -3.484375 0.3125 -2.890625 0.3125 -2.859375 C 0.3125 -2.765625 0.421875 -2.765625 0.421875 -2.765625 C 0.53125 -2.765625 0.53125 -2.765625 0.59375 -2.984375 C 0.765625 -3.6875 0.96875 -4.171875 1.3125 -4.171875 C 1.484375 -4.171875 1.625 -4.09375 1.625 -3.703125 C 1.625 -3.484375 1.59375 -3.375 1.5625 -3.203125 L 0.453125 1.203125 C 0.359375 1.546875 0.34375 1.625 -0.09375 1.625 C -0.203125 1.625 -0.3125 1.625 -0.3125 1.8125 C -0.3125 1.890625 -0.265625 1.921875 -0.1875 1.921875 C 0.078125 1.921875 0.359375 1.890625 0.640625 1.890625 C 0.96875 1.890625 1.3125 1.921875 1.625 1.921875 C 1.671875 1.921875 1.8125 1.921875 1.8125 1.71875 C 1.8125 1.625 1.703125 1.625 1.5625 1.625 C 1.078125 1.625 1.078125 1.546875 1.078125 1.453125 C 1.078125 1.34375 1.484375 -0.28125 1.5625 -0.53125 C 1.6875 -0.234375 1.96875 0.109375 2.46875 0.109375 C 3.625 0.109375 4.859375 -1.34375 4.859375 -2.796875 Z M 3.640625 -1.125 C 3.296875 -0.4375 2.828125 -0.109375 2.453125 -0.109375 C 1.8125 -0.109375 1.671875 -0.9375 1.671875 -0.984375 C 1.671875 -0.984375 1.671875 -1.03125 1.703125 -1.15625 L 2.1875 -3.09375 C 2.265625 -3.359375 2.53125 -3.640625 2.703125 -3.796875 C 3.0625 -4.09375 3.34375 -4.171875 3.515625 -4.171875 C 3.90625 -4.171875 4.140625 -3.8125 4.140625 -3.234375 C 4.140625 -2.65625 3.8125 -1.515625 3.640625 -1.125 Z M 3.640625 -1.125 "/>
</g>
<g id="glyph-1-6">
<path d="M 4.875 -2.796875 C 4.875 -3.734375 4.296875 -4.390625 3.546875 -4.390625 C 3.046875 -4.390625 2.578125 -4.03125 2.25 -3.640625 C 2.140625 -4.1875 1.71875 -4.390625 1.34375 -4.390625 C 0.890625 -4.390625 0.703125 -4 0.609375 -3.828125 C 0.4375 -3.484375 0.3125 -2.890625 0.3125 -2.859375 C 0.3125 -2.765625 0.421875 -2.765625 0.421875 -2.765625 C 0.53125 -2.765625 0.53125 -2.765625 0.59375 -2.984375 C 0.765625 -3.703125 0.96875 -4.171875 1.328125 -4.171875 C 1.484375 -4.171875 1.625 -4.09375 1.625 -3.71875 C 1.625 -3.484375 1.59375 -3.375 1.5625 -3.203125 L 0.453125 1.21875 C 0.375 1.546875 0.34375 1.625 -0.09375 1.625 C -0.203125 1.625 -0.3125 1.625 -0.3125 1.8125 C -0.3125 1.890625 -0.265625 1.921875 -0.1875 1.921875 C 0.078125 1.921875 0.375 1.890625 0.640625 1.890625 C 0.96875 1.890625 1.3125 1.921875 1.625 1.921875 C 1.671875 1.921875 1.8125 1.921875 1.8125 1.734375 C 1.8125 1.625 1.703125 1.625 1.5625 1.625 C 1.078125 1.625 1.078125 1.546875 1.078125 1.453125 C 1.078125 1.34375 1.484375 -0.28125 1.5625 -0.53125 C 1.6875 -0.234375 1.96875 0.109375 2.46875 0.109375 C 3.625 0.109375 4.875 -1.34375 4.875 -2.796875 Z M 3.640625 -1.140625 C 3.3125 -0.4375 2.828125 -0.109375 2.46875 -0.109375 C 1.8125 -0.109375 1.671875 -0.9375 1.671875 -1 C 1.671875 -1 1.671875 -1.03125 1.703125 -1.15625 L 2.203125 -3.09375 C 2.265625 -3.375 2.53125 -3.640625 2.71875 -3.796875 C 3.0625 -4.109375 3.34375 -4.171875 3.515625 -4.171875 C 3.921875 -4.171875 4.15625 -3.828125 4.15625 -3.234375 C 4.15625 -2.65625 3.828125 -1.515625 3.640625 -1.140625 Z M 3.640625 -1.140625 "/>
</g>
<g id="glyph-1-7">
<path d="M 3.828125 -1.8125 C 3.921875 -2.140625 3.96875 -2.5 3.96875 -2.828125 C 3.96875 -2.984375 3.953125 -3.125 3.9375 -3.28125 C 3.84375 -3.75 3.640625 -4.140625 3.359375 -4.484375 C 2.921875 -5.0625 2.296875 -5.84375 2.296875 -6.296875 C 2.296875 -6.34375 2.3125 -6.40625 2.328125 -6.453125 C 2.390625 -6.546875 2.46875 -6.640625 2.546875 -6.6875 C 2.65625 -6.734375 2.765625 -6.75 2.875 -6.75 C 3.3125 -6.734375 3.59375 -6.40625 3.96875 -6.25 C 4.015625 -6.234375 4.046875 -6.234375 4.078125 -6.234375 C 4.21875 -6.234375 4.375 -6.3125 4.4375 -6.453125 C 4.46875 -6.515625 4.484375 -6.5625 4.484375 -6.625 C 4.484375 -6.75 4.40625 -6.859375 4.28125 -6.890625 C 3.921875 -6.96875 3.5 -7.078125 3.140625 -7.078125 C 3.046875 -7.078125 2.96875 -7.0625 2.875 -7.0625 C 2.75 -7.03125 2.59375 -6.984375 2.453125 -6.890625 C 2.328125 -6.8125 2.21875 -6.703125 2.140625 -6.5625 C 2.0625 -6.40625 2.03125 -6.234375 2.03125 -6.046875 C 2.03125 -5.53125 2.328125 -4.890625 2.640625 -4.328125 C 2.21875 -4.25 1.828125 -4.03125 1.484375 -3.734375 C 0.984375 -3.3125 0.640625 -2.75 0.5 -2.171875 C 0.453125 -1.953125 0.421875 -1.765625 0.421875 -1.5625 C 0.421875 -1.1875 0.515625 -0.859375 0.703125 -0.5625 C 0.96875 -0.15625 1.4375 0.109375 2 0.109375 C 2.875 0.109375 3.59375 -0.828125 3.828125 -1.8125 Z M 3.1875 -1.625 C 2.984375 -0.890625 2.640625 -0.109375 2 -0.109375 C 1.59375 -0.109375 1.296875 -0.34375 1.15625 -0.671875 C 1.078125 -0.859375 1.03125 -1.0625 1.03125 -1.28125 C 1.03125 -1.546875 1.09375 -1.84375 1.15625 -2.109375 C 1.296875 -2.640625 1.484375 -3.15625 1.890625 -3.578125 C 2.125 -3.828125 2.4375 -4.03125 2.75 -4.125 L 2.765625 -4.078125 C 2.96875 -3.71875 3.15625 -3.34375 3.234375 -2.921875 C 3.265625 -2.765625 3.28125 -2.59375 3.28125 -2.421875 C 3.28125 -2.171875 3.25 -1.890625 3.1875 -1.625 Z M 3.1875 -1.625 "/>
<path d="M 3.8125 -1.8125 C 3.90625 -2.140625 3.953125 -2.484375 3.953125 -2.8125 C 3.953125 -2.96875 3.953125 -3.125 3.921875 -3.28125 C 3.84375 -3.734375 3.625 -4.140625 3.359375 -4.484375 C 2.921875 -5.046875 2.296875 -5.828125 2.296875 -6.28125 C 2.296875 -6.34375 2.296875 -6.40625 2.328125 -6.453125 C 2.375 -6.53125 2.453125 -6.625 2.546875 -6.671875 C 2.65625 -6.734375 2.765625 -6.734375 2.875 -6.734375 C 3.3125 -6.71875 3.59375 -6.40625 3.96875 -6.234375 C 4.015625 -6.234375 4.046875 -6.21875 4.078125 -6.21875 C 4.21875 -6.21875 4.359375 -6.3125 4.4375 -6.4375 C 4.46875 -6.5 4.484375 -6.5625 4.484375 -6.625 C 4.484375 -6.75 4.40625 -6.84375 4.28125 -6.875 C 3.90625 -6.96875 3.5 -7.0625 3.140625 -7.0625 C 3.046875 -7.0625 2.953125 -7.046875 2.875 -7.046875 C 2.734375 -7.015625 2.59375 -6.96875 2.453125 -6.890625 C 2.328125 -6.8125 2.21875 -6.6875 2.140625 -6.546875 C 2.046875 -6.40625 2.03125 -6.234375 2.03125 -6.046875 C 2.03125 -5.515625 2.328125 -4.875 2.625 -4.328125 C 2.21875 -4.234375 1.828125 -4.03125 1.484375 -3.734375 C 0.984375 -3.296875 0.640625 -2.734375 0.5 -2.15625 C 0.453125 -1.953125 0.421875 -1.75 0.421875 -1.5625 C 0.421875 -1.1875 0.515625 -0.859375 0.703125 -0.5625 C 0.96875 -0.15625 1.4375 0.109375 2 0.109375 C 2.875 0.109375 3.578125 -0.828125 3.8125 -1.8125 Z M 3.171875 -1.625 C 2.984375 -0.890625 2.625 -0.109375 2 -0.109375 C 1.59375 -0.109375 1.296875 -0.34375 1.15625 -0.671875 C 1.078125 -0.859375 1.03125 -1.0625 1.03125 -1.28125 C 1.03125 -1.546875 1.09375 -1.828125 1.15625 -2.109375 C 1.296875 -2.625 1.484375 -3.15625 1.890625 -3.578125 C 2.125 -3.828125 2.4375 -4.03125 2.734375 -4.125 L 2.765625 -4.0625 C 2.96875 -3.703125 3.140625 -3.328125 3.21875 -2.921875 C 3.265625 -2.765625 3.28125 -2.59375 3.28125 -2.421875 C 3.28125 -2.15625 3.25 -1.890625 3.171875 -1.625 Z M 3.171875 -1.625 "/>
</g>
<g id="glyph-2-0">
<path d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.40625 C 2.328125 -4.59375 2.3125 -4.609375 2.109375 -4.609375 C 1.671875 -4.171875 1.046875 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
</g>
<g id="glyph-2-1">
<path d="M 3.28125 0 L 3.28125 -0.25 L 3.03125 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.421875 C 2.328125 -4.609375 2.3125 -4.609375 2.125 -4.609375 C 1.671875 -4.171875 1.046875 -4.171875 0.765625 -4.171875 L 0.765625 -3.921875 C 0.921875 -3.921875 1.390625 -3.921875 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.078125 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
<path d="M 3.5 -1.265625 L 3.265625 -1.265625 C 3.25 -1.109375 3.171875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.421875 2.515625 -1.75 C 3.03125 -2.171875 3.5 -2.59375 3.5 -3.25 C 3.5 -4.09375 2.765625 -4.609375 1.875 -4.609375 C 1.015625 -4.609375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3.015625 0.734375 -2.96875 0.8125 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.46875 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.203125 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.65625 2.40625 -2.171875 2.171875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.5 -1.265625 "/>
</g>
<g id="glyph-2-2">
<path d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.25 -1.109375 3.1875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.59375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.609375 1.890625 -4.609375 C 1.015625 -4.609375 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.015625 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.484375 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.21875 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.171875 2.1875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.515625 -1.265625 "/>
<path d="M 3.5625 -1.203125 C 3.5625 -1.734375 3.125 -2.28125 2.359375 -2.4375 C 3.09375 -2.703125 3.34375 -3.21875 3.34375 -3.65625 C 3.34375 -4.203125 2.71875 -4.609375 1.953125 -4.609375 C 1.171875 -4.609375 0.59375 -4.234375 0.59375 -3.671875 C 0.59375 -3.4375 0.75 -3.3125 0.953125 -3.3125 C 1.171875 -3.3125 1.296875 -3.46875 1.296875 -3.65625 C 1.296875 -3.859375 1.171875 -4.015625 0.953125 -4.03125 C 1.1875 -4.328125 1.671875 -4.40625 1.921875 -4.40625 C 2.234375 -4.40625 2.671875 -4.25 2.671875 -3.65625 C 2.671875 -3.359375 2.578125 -3.03125 2.40625 -2.828125 C 2.171875 -2.5625 1.984375 -2.546875 1.625 -2.53125 C 1.453125 -2.515625 1.4375 -2.515625 1.40625 -2.5 C 1.40625 -2.5 1.34375 -2.484375 1.34375 -2.421875 C 1.34375 -2.3125 1.40625 -2.3125 1.515625 -2.3125 L 1.890625 -2.3125 C 2.4375 -2.3125 2.828125 -1.9375 2.828125 -1.203125 C 2.828125 -0.34375 2.328125 -0.078125 1.921875 -0.078125 C 1.640625 -0.078125 1.03125 -0.15625 0.75 -0.5625 C 1.0625 -0.578125 1.140625 -0.8125 1.140625 -0.953125 C 1.140625 -1.171875 0.984375 -1.34375 0.765625 -1.34375 C 0.5625 -1.34375 0.375 -1.21875 0.375 -0.9375 C 0.375 -0.28125 1.09375 0.140625 1.9375 0.140625 C 2.90625 0.140625 3.5625 -0.5 3.5625 -1.203125 Z M 3.5625 -1.203125 "/>
</g>
<g id="glyph-2-3">
<path d="M 3.578125 -1.203125 C 3.578125 -1.75 3.125 -2.28125 2.359375 -2.453125 C 3.09375 -2.71875 3.359375 -3.234375 3.359375 -3.65625 C 3.359375 -4.203125 2.71875 -4.609375 1.953125 -4.609375 C 1.1875 -4.609375 0.59375 -4.234375 0.59375 -3.6875 C 0.59375 -3.453125 0.75 -3.3125 0.953125 -3.3125 C 1.171875 -3.3125 1.3125 -3.484375 1.3125 -3.671875 C 1.3125 -3.875 1.171875 -4.015625 0.953125 -4.03125 C 1.203125 -4.34375 1.671875 -4.421875 1.9375 -4.421875 C 2.25 -4.421875 2.6875 -4.265625 2.6875 -3.65625 C 2.6875 -3.359375 2.59375 -3.046875 2.40625 -2.828125 C 2.171875 -2.5625 1.984375 -2.546875 1.640625 -2.53125 C 1.453125 -2.515625 1.453125 -2.515625 1.40625 -2.515625 C 1.40625 -2.515625 1.34375 -2.5 1.34375 -2.421875 C 1.34375 -2.328125 1.40625 -2.328125 1.515625 -2.328125 L 1.890625 -2.328125 C 2.4375 -2.328125 2.828125 -1.953125 2.828125 -1.203125 C 2.828125 -0.34375 2.328125 -0.078125 1.921875 -0.078125 C 1.640625 -0.078125 1.03125 -0.15625 0.75 -0.5625 C 1.078125 -0.578125 1.140625 -0.8125 1.140625 -0.953125 C 1.140625 -1.1875 0.984375 -1.34375 0.765625 -1.34375 C 0.5625 -1.34375 0.375 -1.21875 0.375 -0.9375 C 0.375 -0.28125 1.09375 0.140625 1.9375 0.140625 C 2.90625 0.140625 3.578125 -0.5 3.578125 -1.203125 Z M 3.578125 -1.203125 "/>
</g>
<g id="glyph-2-4">
<path d="M 3.671875 -1.140625 L 3.671875 -1.390625 L 2.90625 -1.390625 L 2.90625 -4.484375 C 2.90625 -4.640625 2.90625 -4.6875 2.75 -4.6875 C 2.671875 -4.6875 2.640625 -4.6875 2.578125 -4.59375 L 0.265625 -1.390625 L 0.265625 -1.140625 L 2.3125 -1.140625 L 2.3125 -0.5625 C 2.3125 -0.328125 2.3125 -0.25 1.75 -0.25 L 1.5625 -0.25 L 1.5625 0 L 2.609375 -0.03125 L 3.65625 0 L 3.65625 -0.25 L 3.46875 -0.25 C 2.90625 -0.25 2.90625 -0.328125 2.90625 -0.5625 L 2.90625 -1.140625 Z M 2.359375 -1.390625 L 0.53125 -1.390625 L 2.359375 -3.9375 Z M 2.359375 -1.390625 "/>
<path d="M 3.671875 -1.140625 L 3.671875 -1.390625 L 2.90625 -1.390625 L 2.90625 -4.484375 C 2.90625 -4.625 2.90625 -4.671875 2.75 -4.671875 C 2.65625 -4.671875 2.640625 -4.671875 2.5625 -4.578125 L 0.265625 -1.390625 L 0.265625 -1.140625 L 2.3125 -1.140625 L 2.3125 -0.5625 C 2.3125 -0.328125 2.3125 -0.25 1.75 -0.25 L 1.5625 -0.25 L 1.5625 0 L 2.609375 -0.03125 L 3.65625 0 L 3.65625 -0.25 L 3.46875 -0.25 C 2.90625 -0.25 2.90625 -0.328125 2.90625 -0.5625 L 2.90625 -1.140625 Z M 2.359375 -1.390625 L 0.53125 -1.390625 L 2.359375 -3.921875 Z M 2.359375 -1.390625 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0.0195312 0 L 187 0 L 187 174.285156 L 0.0195312 174.285156 Z M 0.0195312 0 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 202 98 L 225.132812 98 L 225.132812 130 L 202 130 Z M 202 98 "/>
<path clip-rule="nonzero" d="M 0 0.246094 L 173.441406 0.246094 L 173.441406 173.183594 L 0 173.183594 Z M 0 0.246094 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(69.999695%, 69.999695%, 100%)" fill-opacity="1" d="M 169.675781 83.097656 L 169.609375 74.113281 C 169.597656 72.550781 169.449219 70.027344 169.277344 68.472656 L 168.246094 59.117188 C 168.074219 57.5625 167.359375 55.175781 166.644531 53.789062 L 162.355469 45.425781 C 161.640625 44.035156 160.324219 41.878906 159.417969 40.605469 L 153.992188 33.015625 C 153.085938 31.746094 151.261719 30.066406 149.921875 29.261719 L 141.820312 24.40625 C 140.480469 23.605469 138.414062 22.148438 137.207031 21.160156 L 130.394531 15.570312 C 129.1875 14.578125 127.210938 12.996094 125.976562 12.035156 L 118.449219 6.167969 C 117.214844 5.207031 114.984375 4.140625 113.460938 3.785156 L 104.28125 1.640625 C 102.761719 1.285156 100.285156 1.234375 98.75 1.53125 L 89.332031 3.339844 C 87.796875 3.632812 85.300781 3.691406 83.753906 3.46875 L 74.503906 2.125 C 72.960938 1.902344 70.464844 1.96875 68.933594 2.277344 L 59.753906 4.117188 C 58.222656 4.425781 56.015625 5.492188 54.824219 6.503906 L 47.507812 12.730469 C 46.316406 13.742188 44.136719 14.921875 42.640625 15.367188 L 33.101562 18.191406 C 31.605469 18.632812 29.601562 19.984375 28.628906 21.207031 L 22.707031 28.660156 C 21.734375 29.882812 20.3125 31.96875 19.527344 33.320312 L 14.90625 41.292969 C 14.125 42.644531 12.820312 44.816406 11.992188 46.140625 L 7.058594 54.046875 C 6.230469 55.371094 5.363281 57.695312 5.121094 59.242188 L 3.679688 68.441406 C 3.4375 69.984375 3.121094 72.496094 2.976562 74.050781 L 2.128906 83.109375 C 1.984375 84.664062 1.792969 87.191406 1.707031 88.75 L 1.171875 98.183594 C 1.085938 99.742188 1.511719 102.171875 2.128906 103.605469 L 5.859375 112.289062 C 6.476562 113.726562 7.605469 115.988281 8.378906 117.34375 L 12.867188 125.199219 C 13.644531 126.558594 14.75 128.832031 15.335938 130.277344 L 18.933594 139.152344 C 19.519531 140.601562 20.945312 142.613281 22.113281 143.652344 L 29.164062 149.917969 C 30.332031 150.957031 32.40625 152.375 33.796875 153.089844 L 42.066406 157.332031 C 43.457031 158.042969 45.632812 159.328125 46.929688 160.199219 L 54.699219 165.421875 C 55.992188 166.292969 58.265625 167.339844 59.769531 167.757812 L 68.820312 170.277344 C 70.328125 170.699219 72.800781 171.226562 74.34375 171.457031 L 83.757812 172.871094 C 85.300781 173.105469 87.8125 173.148438 89.363281 172.972656 L 98.847656 171.898438 C 100.398438 171.722656 102.859375 171.191406 104.347656 170.707031 L 113.339844 167.785156 C 114.824219 167.300781 117.089844 166.21875 118.398438 165.363281 L 126.214844 160.269531 C 127.523438 159.417969 129.6875 158.101562 131.046875 157.332031 L 139.046875 152.808594 C 140.40625 152.039062 142.191406 150.351562 143.035156 149.035156 L 148.066406 141.203125 C 148.910156 139.890625 150.558594 138.003906 151.75 136.992188 L 158.992188 130.824219 C 160.179688 129.8125 161.515625 127.78125 161.976562 126.285156 L 164.710938 117.378906 C 165.167969 115.886719 166.121094 113.550781 166.84375 112.164062 L 171.277344 103.605469 C 171.996094 102.21875 172.34375 99.847656 172.050781 98.316406 L 170.226562 88.703125 C 169.933594 87.167969 169.6875 84.660156 169.675781 83.097656 Z M 169.675781 83.097656 "/>
<path fill-rule="nonzero" fill="rgb(69.999695%, 69.999695%, 100%)" fill-opacity="1" d="M 171 84.011719 L 169.988281 75.003906 C 169.816406 73.453125 169.535156 70.941406 169.363281 69.394531 L 168.320312 60.050781 C 168.148438 58.503906 167.417969 56.128906 166.6875 54.753906 L 162.289062 46.46875 C 161.558594 45.09375 160.101562 43.054688 159.039062 41.914062 L 152.726562 35.144531 C 151.664062 34.007812 150.160156 31.992188 149.371094 30.648438 L 144.425781 22.238281 C 143.636719 20.894531 141.800781 19.398438 140.324219 18.894531 L 131.015625 15.710938 C 129.539062 15.207031 127.292969 14.097656 125.992188 13.238281 L 118.316406 8.15625 C 117.015625 7.292969 114.78125 6.148438 113.324219 5.59375 L 104.492188 2.238281 C 103.035156 1.6875 100.609375 1.457031 99.074219 1.726562 L 89.542969 3.394531 C 88.007812 3.664062 85.507812 3.753906 83.957031 3.597656 L 74.683594 2.660156 C 73.132812 2.503906 70.722656 2.890625 69.296875 3.527344 L 60.824219 7.316406 C 59.398438 7.949219 57.042969 8.847656 55.558594 9.320312 L 46.808594 12.097656 C 45.324219 12.570312 43.125 13.734375 41.902344 14.699219 L 34.695312 20.378906 C 33.472656 21.339844 31.621094 23.054688 30.566406 24.199219 L 24.449219 30.847656 C 23.394531 31.996094 21.90625 34.019531 21.128906 35.371094 L 16.675781 43.09375 C 15.898438 44.445312 14.566406 46.589844 13.703125 47.886719 L 8.644531 55.46875 C 7.78125 56.761719 6.902344 59.066406 6.679688 60.609375 L 5.390625 69.605469 C 5.171875 71.148438 4.652344 73.617188 4.238281 75.117188 L 1.746094 84.097656 C 1.332031 85.601562 1.117188 88.074219 1.265625 89.625 L 2.171875 98.875 C 2.320312 100.425781 2.707031 102.921875 3.027344 104.445312 L 4.960938 113.617188 C 5.285156 115.144531 6.164062 117.480469 6.929688 118.839844 L 11.527344 126.996094 C 12.292969 128.355469 13.574219 130.53125 14.390625 131.859375 L 19.28125 139.800781 C 20.097656 141.125 21.75 142.988281 22.972656 143.957031 L 30.273438 149.75 C 31.496094 150.71875 33.519531 152.226562 34.800781 153.117188 L 42.246094 158.304688 C 43.523438 159.195312 45.710938 160.433594 47.132812 161.074219 L 55.386719 164.792969 C 56.808594 165.433594 59.195312 166.226562 60.714844 166.566406 L 69.496094 168.519531 C 71.015625 168.859375 73.496094 169.339844 75.035156 169.59375 L 83.980469 171.074219 C 85.519531 171.332031 88.027344 171.59375 89.582031 171.660156 L 99 172.070312 C 100.554688 172.136719 103 171.75 104.460938 171.207031 L 113.277344 167.917969 C 114.738281 167.371094 116.953125 166.199219 118.226562 165.300781 L 125.753906 159.972656 C 127.027344 159.070312 129.230469 157.867188 130.675781 157.285156 L 139.421875 153.746094 C 140.867188 153.160156 142.738281 151.636719 143.601562 150.339844 L 148.804688 142.539062 C 149.667969 141.242188 151.019531 139.105469 151.820312 137.769531 L 156.328125 130.238281 C 157.128906 128.902344 158.578125 126.839844 159.566406 125.636719 L 165.558594 118.332031 C 166.546875 117.125 167.777344 114.960938 168.300781 113.492188 L 171.496094 104.582031 C 172.023438 103.113281 172.355469 100.667969 172.238281 99.113281 L 171.527344 89.632812 C 171.410156 88.078125 171.175781 85.5625 171 84.011719 Z M 171 84.011719 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 83.29207 2.833478 L 83.225528 11.836219 C 83.213785 13.401913 83.065044 15.930508 82.892818 17.488374 L 81.85946 26.862967 C 81.687233 28.420832 80.970928 30.81243 80.254623 32.201984 L 75.956793 40.582361 C 75.240488 41.975828 73.921391 44.136486 73.013288 45.412527 L 67.576416 53.017885 C 66.668313 54.290012 64.840366 55.973133 63.497783 56.779465 L 55.379659 61.644859 C 54.037077 62.447278 51.966447 63.907287 50.756948 64.897589 L 43.930522 70.498859 C 42.721023 71.493075 40.74042 73.07834 39.503522 74.041242 L 31.960791 79.920423 C 30.723893 80.883325 28.488865 81.951911 26.962313 82.308106 L 17.763861 84.457021 C 16.241223 84.813217 13.759598 84.864102 12.221304 84.56662 L 2.784083 82.754329 C 1.245789 82.460761 -1.255407 82.402048 -2.805444 82.625159 L -12.074353 83.971656 C -13.620476 84.194768 -16.121672 84.128226 -17.656052 83.819001 L -26.854504 81.975396 C -28.388885 81.666172 -30.600427 80.597586 -31.794269 79.583799 L -39.125631 73.344508 C -40.319473 72.330721 -42.503616 71.148622 -44.002768 70.702399 L -53.56133 67.872407 C -55.060482 67.430099 -57.068485 66.075774 -58.043129 64.850618 L -63.97711 57.382258 C -64.951754 56.157102 -66.376536 54.0669 -67.163297 52.712575 L -71.793837 44.723621 C -72.576684 43.369296 -73.884038 41.192981 -74.713856 39.866056 L -79.657535 31.943644 C -80.487353 30.616718 -81.356313 28.287748 -81.598996 26.737711 L -83.043348 17.519688 C -83.286031 15.973565 -83.603084 13.456712 -83.747911 11.898846 L -84.5973 2.821735 C -84.742126 1.26387 -84.933924 -1.26864 -85.020037 -2.83042 L -85.556287 -12.283298 C -85.642401 -13.845077 -85.215749 -16.279732 -84.5973 -17.716256 L -80.859205 -26.4176 C -80.240756 -27.858039 -79.109542 -30.124381 -78.334524 -31.482621 L -73.837068 -39.354147 C -73.058135 -40.716301 -71.950406 -42.994386 -71.363271 -44.442653 L -67.758261 -53.335795 C -67.171125 -54.787976 -65.74243 -56.803807 -64.572073 -57.844994 L -57.506879 -64.123427 C -56.336523 -65.164613 -54.258064 -66.58548 -52.864596 -67.301785 L -44.578161 -71.552645 C -43.184693 -72.265035 -41.004464 -73.552819 -39.704938 -74.425693 L -31.919525 -79.659025 C -30.623913 -80.5319 -28.345828 -81.580915 -26.838848 -81.999738 L -17.769565 -84.52442 C -16.25867 -84.947157 -13.780959 -85.475579 -12.234837 -85.706519 L -2.80153 -87.123472 C -1.255407 -87.358326 1.261446 -87.401382 2.815397 -87.225242 L 12.31916 -86.148827 C 13.873111 -85.972687 16.339079 -85.440351 17.830403 -84.954985 L 26.840972 -82.027138 C 28.328381 -81.541773 30.598637 -80.457529 31.909906 -79.600312 L 39.742291 -74.496149 C 41.053559 -73.642846 43.222045 -72.323749 44.584199 -71.552645 L 52.600553 -67.019961 C 53.962706 -66.248856 55.751512 -64.557907 56.596987 -63.238809 L 61.638521 -55.390768 C 62.483996 -54.075585 64.135803 -52.18501 65.329645 -51.171223 L 72.586637 -44.990646 C 73.776564 -43.976859 75.115233 -41.941457 75.577112 -40.442305 L 78.317077 -31.517849 C 78.775042 -30.022611 79.730116 -27.681898 80.454249 -26.292345 L 84.896906 -17.716256 C 85.617125 -16.326703 85.965492 -13.950762 85.671924 -12.416382 L 83.843977 -2.783449 C 83.550409 -1.245155 83.303812 1.267784 83.29207 2.833478 Z M 83.29207 2.833478 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 84.61357 2.818538 L 83.597316 11.866732 C 83.42467 13.424465 83.142159 15.947443 82.969514 17.501253 L 81.921869 26.88689 C 81.749224 28.440699 81.015481 30.826346 80.281737 32.20751 L 75.863582 40.529807 C 75.129839 41.910971 73.666276 43.959175 72.599013 45.104913 L 66.258215 51.904791 C 65.190952 53.046605 63.680304 55.071266 62.887704 56.42104 L 57.920222 64.868898 C 57.127623 66.218672 55.283455 67.721472 53.800273 68.227637 L 44.44995 71.425503 C 42.966768 71.931668 40.710606 73.046016 39.403993 73.909244 L 31.693803 79.014057 C 30.38719 79.881208 28.142799 81.03087 26.679236 81.588044 L 17.807612 84.958555 C 16.344049 85.511805 13.907393 85.743307 12.365355 85.472568 L 2.791378 83.797122 C 1.24934 83.526382 -1.261868 83.436136 -2.819601 83.593086 L -12.13461 84.534789 C -13.692343 84.691739 -16.113304 84.303287 -17.545477 83.663714 L -26.056115 79.857666 C -27.488287 79.222016 -29.854315 78.319551 -31.345345 77.844776 L -40.13457 75.054982 C -41.625599 74.580207 -43.834677 73.410926 -45.062814 72.441757 L -52.302153 66.736608 C -53.53029 65.771363 -55.390153 64.048832 -56.449569 62.89917 L -62.594179 56.220928 C -63.653594 55.067342 -65.148547 53.034834 -65.929376 51.677213 L -70.402463 43.919937 C -71.183292 42.562316 -72.521295 40.408171 -73.388446 39.105482 L -78.469716 31.489461 C -79.336868 30.190697 -80.219714 27.875677 -80.443368 26.325792 L -81.73821 17.28937 C -81.95794 15.739484 -82.4798 13.259667 -82.895719 11.752943 L -85.399079 2.732216 C -85.814997 1.221568 -86.030804 -1.262173 -85.881701 -2.819906 L -84.971389 -12.111373 C -84.822286 -13.669106 -84.433833 -16.176389 -84.112085 -17.706656 L -82.169823 -26.919648 C -81.844151 -28.453838 -80.961305 -30.800247 -80.192248 -32.165716 L -75.573981 -40.35853 C -74.804924 -41.723998 -73.51793 -43.909533 -72.697864 -45.243612 L -67.785315 -53.220619 C -66.965249 -54.550774 -65.305498 -56.422408 -64.07736 -57.395501 L -56.743851 -63.214438 C -55.515714 -64.187531 -53.483205 -65.702103 -52.196212 -66.596721 L -44.717523 -71.807475 C -43.434453 -72.702093 -41.237147 -73.945925 -39.808898 -74.589422 L -31.51799 -78.324843 C -30.089741 -78.96834 -27.692323 -79.764863 -26.16598 -80.10623 L -17.345365 -82.068111 C -15.819022 -82.409478 -13.327433 -82.892101 -11.781471 -83.147145 L -2.796058 -84.634251 C -1.250096 -84.893219 1.268958 -85.156111 2.830615 -85.222815 L 12.290803 -85.63481 C 13.85246 -85.701514 16.308735 -85.313061 17.776222 -84.767659 L 26.632151 -81.463852 C 28.099637 -80.914525 30.32441 -79.737397 31.603556 -78.834932 L 39.164644 -73.482922 C 40.44379 -72.576533 42.656791 -71.368014 44.108583 -70.783374 L 52.893884 -67.228446 C 54.345676 -66.639882 56.225157 -65.109615 57.092309 -63.806926 L 62.318759 -55.971175 C 63.18591 -54.668487 64.543531 -52.522189 65.347902 -51.180263 L 69.875923 -43.615251 C 70.680294 -42.273325 72.136009 -40.201579 73.128721 -38.993061 L 79.14777 -31.655627 C 80.140482 -30.443185 81.376467 -28.269421 81.902251 -26.794087 L 85.111887 -17.843988 C 85.641595 -16.368654 85.975115 -13.912379 85.857402 -12.350722 L 85.143277 -2.827754 C 85.025565 -1.266097 84.790139 1.260805 84.61357 2.818538 Z M 84.61357 2.818538 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="197.222402" y="116.423012"/>
<use xlink:href="#glyph-0-0" x="84.284166" y="89.021798"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 113.388623 -28.347318 L 131.429332 -28.347318 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 220.925781 114.214844 L 216.488281 112.535156 L 217.964844 114.214844 L 216.488281 115.894531 Z M 220.925781 114.214844 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054133 -0.000518319 L 1.607562 1.682603 L 3.087143 -0.000518319 L 1.607562 -1.683639 Z M 6.054133 -0.000518319 " transform="matrix(0.99796, 0, 0, -0.99796, 214.883998, 114.214326)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.00158346 0.00127797 L 18.043037 0.00127797 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055062 0.00127797 L 1.60944 1.684572 L 3.088698 0.00127797 L 1.60944 -1.682016 Z M 6.055062 0.00127797 " transform="matrix(0.995537, 0, 0, -0.995537, 101.901649, 86.817679)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="99.8693" y="83.015722"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.00158346 0.00127797 L 0.00158346 18.042732 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054756 -0.00158346 L 1.609135 1.68171 L 3.088393 -0.00158346 L 1.609135 -1.684877 Z M 6.054756 -0.00158346 " transform="matrix(0, -0.995537, -0.995537, 0, 86.764049, 71.680078)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-1" x="90.565009" y="72.313698"/>
</g>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 1.13555 0.00127797 C 1.13555 0.625156 0.625461 1.135245 0.00158346 1.135245 C -0.626218 1.135245 -1.132384 0.625156 -1.132384 0.00127797 C -1.132384 -0.626524 -0.626218 -1.132689 0.00158346 -1.132689 C 0.625461 -1.132689 1.13555 -0.626524 1.13555 0.00127797 Z M 1.13555 0.00127797 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 4.533528 0.00127797 C 4.533528 2.504638 2.504943 4.537146 0.00158346 4.537146 C -2.5057 4.537146 -4.534284 2.504638 -4.534284 0.00127797 C -4.534284 -2.506005 -2.5057 -4.53459 0.00158346 -4.53459 C 2.504943 -4.53459 4.533528 -2.506005 4.533528 0.00127797 Z M 4.533528 0.00127797 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-2" x="72.902189" y="88.953106"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-1" x="212.846463" y="110.402319"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 113.388623 -28.347318 L 113.388623 -10.302695 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052232 -0.00138277 L 1.609575 1.681738 L 3.089156 -0.00138277 L 1.609575 -1.684504 Z M 6.052232 -0.00138277 " transform="matrix(0, -0.99796, -0.99796, 0, 199.709558, 99.039886)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-2" x="203.519529" y="99.674249"/>
</g>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 114.519837 -28.347318 C 114.519837 -27.721041 114.0149 -27.21219 113.388623 -27.21219 C 112.762345 -27.21219 112.253495 -27.721041 112.253495 -28.347318 C 112.253495 -28.973596 112.762345 -29.482446 113.388623 -29.482446 C 114.0149 -29.482446 114.519837 -28.973596 114.519837 -28.347318 Z M 114.519837 -28.347318 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 117.921307 -28.347318 C 117.921307 -25.842208 115.893733 -23.81072 113.388623 -23.81072 C 110.883512 -23.81072 108.852024 -25.842208 108.852024 -28.347318 C 108.852024 -30.852429 110.883512 -32.883917 113.388623 -32.883917 C 115.893733 -32.883917 117.921307 -30.852429 117.921307 -28.347318 Z M 117.921307 -28.347318 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-3" x="185.813723" y="116.354152"/>
<use xlink:href="#glyph-0-1" x="90.565009" y="98.058288"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="203.519529" y="125.481494"/>
<use xlink:href="#glyph-1-3" x="95.524775" y="98.058288"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-4" x="208.490368" y="125.481494"/>
<use xlink:href="#glyph-0-2" x="103.365626" y="98.058288"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -42.520217 -42.520522 L -18.785385 -40.146646 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054883 0.00143888 L 1.609188 1.68425 L 3.089012 -0.00170835 L 1.607653 -1.683395 Z M 6.054883 0.00143888 " transform="matrix(0.99054, -0.099046, -0.099046, -0.99054, 65.252542, 127.065981)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="41.953926" y="131.352037"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-3" x="216.350301" y="125.481494"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -42.519273 -42.520763 L -18.317558 -30.417949 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054767 -0.000899633 L 1.609945 1.683105 L 3.087488 -0.000952717 L 1.608255 -1.681562 Z M 6.054767 -0.000899633 " transform="matrix(0.892555, -0.446258, -0.446258, -0.892555, 65.739914, 117.54884)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="41.635448" y="130.567099"/>
<use xlink:href="#glyph-1-4" x="39.793611" y="123.417606"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="39.468877" y="122.613357"/>
<use xlink:href="#glyph-1-5" x="39.714266" y="123.417606"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="39.389339" y="122.613357"/>
<use xlink:href="#glyph-2-0" x="44.704595" y="124.904939"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-1" x="44.391813" y="124.105308"/>
<use xlink:href="#glyph-1-6" x="76.455261" y="128.904011"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-7" x="76.22075" y="116.798245"/>
<use xlink:href="#glyph-1-4" x="81.319117" y="128.904011"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="81.096442" y="116.798245"/>
<use xlink:href="#glyph-1-5" x="81.239771" y="128.904011"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="81.016904" y="116.798245"/>
<use xlink:href="#glyph-2-0" x="86.229445" y="130.392339"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -42.520217 42.519154 L -53.075134 34.07522 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054812 0.000956149 L 1.607544 1.684401 L 3.087512 -0.00209871 L 1.607534 -1.682461 Z M 6.054812 0.000956149 " transform="matrix(-0.777335, 0.621872, 0.621872, 0.777335, 36.131806, 51.128468)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="41.953926" y="46.691558"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-1" x="86.017723" y="118.290195"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -42.519273 42.519907 L -54.622088 66.721622 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053509 -0.000688195 L 1.608687 1.683316 L 3.08623 -0.000741279 L 1.610498 -1.683101 Z M 6.053509 -0.000688195 " transform="matrix(-0.446258, -0.892555, -0.892555, 0.446258, 33.310186, 21.87215)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="41.635448" y="45.701578"/>
<use xlink:href="#glyph-1-4" x="39.793611" y="38.758123"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="39.468877" y="37.747837"/>
<use xlink:href="#glyph-1-5" x="39.714266" y="38.758123"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="39.389339" y="37.747837"/>
<use xlink:href="#glyph-2-1" x="44.704595" y="40.245455"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-2" x="44.391813" y="39.238789"/>
<use xlink:href="#glyph-1-6" x="23.21294" y="66.663029"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-7" x="33.78749" y="17.788637"/>
<use xlink:href="#glyph-1-4" x="28.076795" y="66.663029"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="38.663183" y="17.788637"/>
<use xlink:href="#glyph-1-5" x="27.997449" y="66.663029"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="38.583645" y="17.788637"/>
<use xlink:href="#glyph-2-1" x="32.986128" y="68.151357"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 42.51946 42.519154 L 24.438768 40.259068 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05485 -0.00164313 L 1.607436 1.685177 L 3.089435 0.00124024 L 1.609425 -1.684193 Z M 6.05485 -0.00164313 " transform="matrix(-0.987832, 0.123467, 0.123467, 0.987832, 113.899345, 46.386864)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="126.614405" y="46.691558"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-2" x="43.584464" y="19.279589"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 42.521397 42.519907 L 66.723113 54.622722 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055126 -0.000787607 L 1.610304 1.683217 L 3.087846 -0.000840691 L 1.608613 -1.68145 Z M 6.055126 -0.000787607 " transform="matrix(0.892555, -0.446258, -0.446258, -0.892555, 150.606832, 32.681913)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="126.500968" y="45.701578"/>
<use xlink:href="#glyph-1-4" x="124.453094" y="38.758123"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="124.335395" y="37.747837"/>
<use xlink:href="#glyph-1-5" x="124.373749" y="38.758123"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="124.255857" y="37.747837"/>
<use xlink:href="#glyph-2-2" x="129.364078" y="40.245455"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-3" x="129.257334" y="39.238789"/>
<use xlink:href="#glyph-1-6" x="99.406375" y="58.197977"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-7" x="161.08627" y="31.932724"/>
<use xlink:href="#glyph-1-4" x="104.27023" y="58.197977"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="165.961962" y="31.932724"/>
<use xlink:href="#glyph-1-5" x="104.190885" y="58.197977"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="165.882424" y="31.932724"/>
<use xlink:href="#glyph-2-2" x="109.179563" y="59.685309"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 42.51946 -42.520522 L 52.391643 -38.573218 " transform="matrix(0.995537, 0, 0, -0.995537, 86.764049, 86.817679)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054946 0.000779225 L 1.609415 1.681761 L 3.087865 0.0000340403 L 1.607977 -1.681709 Z M 6.054946 0.000779225 " transform="matrix(0.924297, -0.369713, -0.369713, -0.924297, 136.298254, 126.266654)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="126.614405" y="131.352037"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-3" x="170.883243" y="33.423676"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 42.521397 -42.520763 L 54.620298 -18.319048 " transform="matrix(0.99796, 0, 0, -0.99796, 86.553628, 85.925354)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054217 -0.00133293 L 1.609456 1.684581 L 3.086938 -0.00127984 L 1.607645 -1.681836 Z M 6.054217 -0.00133293 " transform="matrix(0.446258, -0.892555, -0.892555, -0.446258, 139.797069, 106.739067)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="126.500968" y="130.567099"/>
<use xlink:href="#glyph-1-4" x="124.453094" y="123.417606"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="124.335395" y="122.613357"/>
<use xlink:href="#glyph-1-5" x="124.373749" y="123.417606"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="124.255857" y="122.613357"/>
<use xlink:href="#glyph-2-3" x="129.364078" y="124.904939"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-4" x="129.257334" y="124.105308"/>
<use xlink:href="#glyph-1-6" x="136.091919" y="134.391412"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-7" x="146.942183" y="102.654157"/>
<use xlink:href="#glyph-1-4" x="140.955774" y="134.391412"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-5" x="151.817875" y="102.654157"/>
<use xlink:href="#glyph-1-5" x="140.876428" y="134.391412"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-6" x="151.738337" y="102.654157"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-4" x="156.739156" y="104.14511"/>
<use xlink:href="#glyph-2-3" x="145.866102" y="135.878744"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 42 KiB

23
matlab/mat/acc_pos.txt Normal file
View File

@ -0,0 +1,23 @@
23 1.5500e-001 -9.0000e-002 -5.9400e-001
22 0.0000e+000 1.8000e-001 -5.9400e-001
21 -1.5500e-001 -9.0000e-002 -5.9400e-001
20 8.6490e-001 -5.0600e-001 -9.5060e-001
19 8.7500e-001 7.9900e-001 -9.5060e-001
18 -7.3500e-001 8.1400e-001 -9.5060e-001
17 -7.3000e-001 -5.2600e-001 -9.5060e-001
16 2.9500e-001 -4.8100e-001 -7.8560e-001
15 4.5000e-001 5.3400e-001 -7.8560e-001
14 -4.8000e-001 5.3400e-001 -7.8560e-001
13 -3.2000e-001 -4.4600e-001 -7.8560e-001
12 4.7500e-001 -4.1900e-001 -4.2730e-001
11 4.7500e-001 4.2400e-001 -4.2730e-001
10 -4.6500e-001 4.0700e-001 -4.2730e-001
9 -4.7500e-001 -4.1400e-001 -4.2730e-001
8 3.8000e-001 -3.0000e-001 -4.1680e-001
7 4.2000e-001 2.8000e-001 -4.1680e-001
6 -4.2000e-001 2.8000e-001 -4.1680e-001
5 -3.8500e-001 -3.0000e-001 -4.1680e-001
4 6.4000e-002 -6.4000e-002 -2.7000e-001
3 6.4000e-002 6.4000e-002 -2.7000e-001
2 -6.4000e-002 6.4000e-002 -2.7000e-001
1 -6.4000e-002 -6.4000e-002 -2.7000e-001

BIN
matlab/mat/frf_com.mat Normal file

Binary file not shown.

BIN
matlab/mat/frf_matrix.mat Normal file

Binary file not shown.

BIN
matlab/mat/geometry.mat Normal file

Binary file not shown.

Binary file not shown.

BIN
matlab/mat/meas_raw_1.mat Normal file

Binary file not shown.

Binary file not shown.

16
matlab/mat/mode_damps.txt Normal file
View File

@ -0,0 +1,16 @@
12.20318
11.66888
6.19561
2.79104
2.76253
4.34928
1.25546
3.65470
2.94088
3.19084
1.55526
3.13166
2.76141
1.34304
2.43201
1.38400

16
matlab/mat/mode_freqs.txt Normal file
View File

@ -0,0 +1,16 @@
11.86509
18.55747
37.82163
39.07850
56.31944
69.78452
72.49325
84.83446
91.26350
105.47266
106.57165
112.67669
124.20538
145.30034
150.52113
165.42632

View File

@ -0,0 +1,16 @@
4.13559e+003 +6.22828e+003
2.76278e+002 +1.74197e+004
-1.32270e+004 +2.17346e+004
-2.48397e+005 -1.60998e+005
-4.23967e+004 +7.06852e+004
-7.36964e+003 +4.57024e+004
1.37806e+005 +3.00336e+005
-1.31109e+004 +2.81759e+004
5.59259e+003 -4.27543e+004
-5.28869e+004 +6.38436e+003
3.71578e+004 +1.57745e+004
-4.24659e+004 +7.90956e+003
-3.57355e+004 +1.13161e+005
5.24764e+004 -1.45211e+005
1.97228e+005 +2.51758e+005
-3.00273e+005 +3.27201e+005

View File

@ -0,0 +1,16 @@
4.98475e+005 -2.49344e+005
2.02102e+006 +2.05017e+005
4.96035e+006 +3.45724e+006
-4.12180e+007 +5.98638e+007
2.45891e+007 +1.56880e+007
1.98796e+007 +4.09986e+006
1.37577e+008 -6.10466e+007
1.47532e+007 +7.53272e+006
-2.44115e+007 -3.92655e+006
3.11045e+006 +3.51656e+007
1.09485e+007 -2.47140e+007
4.65546e+006 +3.02251e+007
8.75076e+007 +3.03162e+007
-1.31915e+008 -4.96844e+007
2.42567e+008 -1.80683e+008
3.35742e+008 +3.16782e+008

1104
matlab/mat/mode_shapes.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
0.045
0.144
-1.251
0.052
0.258
-0.778
0.000
0.014
-0.600
0.000
-0.005
-0.628
0.000
0.000
-0.580
-0.004
0.006
-0.319

View File

@ -12,48 +12,77 @@ colors = colororder;
% Location of the Accelerometers
% <<ssec:modal_accelerometers>>
% 4 tri-axis accelerometers are used for each solid body.
% Only 2 could have been used as only 6DOF have to be measured, however, we have chosen to have some *redundancy*.
% The location of the accelerometers fixed to the micro-station is essential as it defines where the dynamics is measured.
% A total of 23 accelerometers are fixed to the six key stages of the micro station: the lower and upper granites, the translation stage, the tilt stage, the spindle and the micro hexapod.
% The position of the accelerometers are visually shown on a CAD model in Figure ref:fig:modal_location_accelerometers and their precise locations with respect to a frame located at the point of interest are summarized in Table ref:tab:modal_position_accelerometers.
% Pictures of the accelerometers fixed to the translation stage and to the micro-hexapod are shown in Figure ref:fig:modal_accelerometer_pictures.
% This could also help us identify measurement problems or flexible modes is present.
% As all key stages of the micro-station are foreseen to behave as solid bodies, only 6 acrshort:dof can be considered per solid body.
% However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured acrshort:dof) for each considered solid body to have some redundancy and to be able to verify the solid body assumption (see Section ref:ssec:modal_solid_body_assumption).
% The position of the accelerometers are:
% - 4 on the first granite
% - 4 on the second granite
% - 4 on top of the translation stage (figure ref:fig:accelerometers_ty)
% - 4 on top of the tilt stage
% - 3 on top of the spindle
% - 4 on top of the hexapod (figure ref:fig:accelerometers_hexapod)
% #+attr_latex: :options [t]{0.60\linewidth}
% #+begin_minipage
% #+name: fig:modal_location_accelerometers
% #+caption: Position of the accelerometers
% #+attr_latex: :width 0.99\linewidth :float nil
% [[file:figs/modal_location_accelerometers.png]]
% #+end_minipage
% \hfill
% #+attr_latex: :options [b]{0.38\linewidth}
% #+begin_minipage
% #+begin_scriptsize
% #+name: tab:modal_position_accelerometers
% #+caption: Positions in mm
% #+attr_latex: :environment tabularx :width \linewidth :placement [b] :align Xccc
% #+attr_latex: :booktabs t :float nil :center nil
% #+RESULTS:
% | | $x$ | $y$ | $z$ |
% |--------------+------+------+------|
% | Low. Granite | -730 | -526 | -951 |
% | Low. Granite | -735 | 814 | -951 |
% | Low. Granite | 875 | 799 | -951 |
% | Low. Granite | 865 | -506 | -951 |
% | Up. Granite | -320 | -446 | -786 |
% | Up. Granite | -480 | 534 | -786 |
% | Up. Granite | 450 | 534 | -786 |
% | Up. Granite | 295 | -481 | -786 |
% | Translation | -475 | -414 | -427 |
% | Translation | -465 | 407 | -427 |
% | Translation | 475 | 424 | -427 |
% | Translation | 475 | -419 | -427 |
% | Tilt | -385 | -300 | -417 |
% | Tilt | -420 | 280 | -417 |
% | Tilt | 420 | 280 | -417 |
% | Tilt | 380 | -300 | -417 |
% | Spindle | -155 | -90 | -594 |
% | Spindle | 0 | 180 | -594 |
% | Spindle | 155 | -90 | -594 |
% | Hexapod | -64 | -64 | -270 |
% | Hexapod | -64 | 64 | -270 |
% | Hexapod | 64 | 64 | -270 |
% | Hexapod | 64 | -64 | -270 |
% #+end_scriptsize
% #+end_minipage
% In total, 23 accelerometers are used: *69 DOFs are thus measured*.
% The precise determination of the position of each accelerometer is done using the SolidWorks model (shown on figure ref:fig:location_accelerometers).
% #+name: fig:accelerometer_pictures
% #+caption: Accelerometers fixed on the micro-station
% #+name: fig:modal_accelerometer_pictures
% #+caption: Accelerometers fixed on the micro-station stages
% #+attr_latex: :options [htbp]
% #+begin_figure
% #+attr_latex: :caption \subcaption{\label{fig:accelerometers_ty}$T_y$ stage}
% #+attr_latex: :caption \subcaption{\label{fig:modal_accelerometers_ty} $T_y$ stage}
% #+attr_latex: :options {0.49\textwidth}
% #+begin_subfigure
% #+attr_latex: :height 6cm
% [[file:figs/accelerometers_ty.jpg]]
% [[file:figs/modal_accelerometers_ty.jpg]]
% #+end_subfigure
% #+attr_latex: :caption \subcaption{\label{fig:accelerometers_hexapod}Micro-Hexapod}
% #+attr_latex: :caption \subcaption{\label{fig:modal_accelerometers_hexapod} Micro-Hexapod}
% #+attr_latex: :options {0.49\textwidth}
% #+begin_subfigure
% #+attr_latex: :height 6cm
% [[file:figs/accelerometers_hexapod.jpg]]
% [[file:figs/modal_accelerometers_hexapod.jpg]]
% #+end_subfigure
% #+end_figure
% #+name: fig:location_accelerometers
% #+caption: Position of the accelerometers using SolidWorks
% #+attr_latex: :width \linewidth
% [[file:figs/location_accelerometers.png]]
% The precise position of all the 23 accelerometer with respect to a frame located at the point of interest (located 270mm above the top platform of the hexapod) are shown in table ref:tab:position_accelerometers.
%% Load Accelerometer positions
acc_pos = readtable('mat/acc_pos.txt', 'ReadVariableNames', false);
@ -61,59 +90,18 @@ acc_pos = table2array(acc_pos(:, 1:4));
[~, i] = sort(acc_pos(:, 1));
acc_pos = acc_pos(i, 2:4);
% Signal Processing :noexport:
% <<ssec:modal_signal_processing>>
% The measurements are averaged 10 times corresponding to 10 hammer impacts in order to reduce the effect of random noise.
% Windowing is also used on the force and response signals.
% A boxcar window (figure ref:fig:modal_windowing_force_signal) is used for the force signal as once the impact on the structure is done, the measured signal is meaningless.
% The parameters are:
% - *Start*: $3\%$
% - *Stop*: $7\%$
%% Boxcar window used for the force signal
figure;
plot(100*[0, 0.03, 0.03, 0.07, 0.07, 1], [0, 0, 1, 1, 0, 0]);
xlabel('Time [\%]'); ylabel('Amplitude');
xlim([0, 100]); ylim([0, 1]);
% #+name: fig:modal_windowing_force_signal
% #+caption: Boxcar window used for the force signal
% #+RESULTS:
% [[file:figs/modal_windowing_force_signal.png]]
% An exponential window (figure ref:fig:modal_windowing_acc_signal) is used for the response signal as we are measuring transient signals and most of the information is located at the beginning of the signal.
% The parameters are:
% - FlatTop:
% - *Start*: $3\%$
% - *Stop*: $2.96\%$
% - Decreasing point:
% - *X*: $60.4\%$
% - *Y*: $14.7\%$
%% Exponential window used for acceleration signal
x0 = 0.296;
xd = 0.604;
yd = 0.147;
alpha = log(yd)/(x0 - xd);
t = x0:0.01:1.01;
y = exp(-alpha*(t-x0));
figure;
plot(100*[0, 0.03, 0.03, x0, t], [0, 0, 1, 1, y]);
xlabel('Time [\%]'); ylabel('Amplitude');
xlim([0, 100]); ylim([0, 1]);
% Force and Response signals
% <<ssec:modal_measured_signals>>
% The force sensor of the instrumented hammer and the accelerometers signals are shown in the time domain in Figure ref:fig:modal_raw_meas.
% Sharp "impacts" can be seen for the force sensor, indicating wide frequency band excitation.
% For the accelerometer, a much more complex signal can be observed, indicating complex dynamics.
% The "normalized" acrfull:asd of the two signals are computed and shown in Figure ref:fig:modal_asd_acc_force.
% Conclusions based on the time domain signals can be clearly seen in the frequency domain (wide frequency content for the force signal and complex dynamics for the accelerometer).
% Similar results are obtained for all the measured frequency response functions.
%% Load raw data
meas1_raw = load('mat/meas_raw_1.mat');
@ -126,46 +114,17 @@ impacts = [5.937, 11.228, 16.681, 22.205, 27.350, 32.714, 38.115, 43.888, 50.407
% Time vector [s]
time = linspace(0, meas1_raw.Track1_X_Resolution*length(meas1_raw.Track1), length(meas1_raw.Track1));
% The force sensor and the accelerometers signals are shown in the time domain in Figure ref:fig:modal_raw_meas.
% Sharp "impacts" can be seen for the force sensor, indicating wide frequency band excitation.
% For the accelerometer, many resonances can be seen on the right, indicating complex dynamics
%% Raw measurement of the Accelerometer
figure;
tiledlayout(1, 3, 'TileSpacing', 'Compact', 'Padding', 'None');
ax1 = nexttile([1,2]);
hold on;
plot(time, meas1_raw.Track2, 'DisplayName', 'Acceleration [$m/s^2$]');
plot(time, 1e-3*meas1_raw.Track1, 'DisplayName', 'Force [kN]');
plot(time-22.2, meas1_raw.Track2, 'DisplayName', '$X_{j}$ [$m/s^2$]');
plot(time-22.2, 1e-3*meas1_raw.Track1, 'DisplayName', '$F_{k}$ [kN]');
hold off;
xlabel('Time [s]');
ylabel('Amplitude');
xlim([0, time(end)]);
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
ax2 = nexttile();
hold on;
plot(time, meas1_raw.Track2);
plot(time, 1e-3*meas1_raw.Track1);
hold off;
xlabel('Time [s]');
set(gca, 'YTickLabel',[]);
xlim([22.19, 22.4]);
linkaxes([ax1,ax2],'y');
xlim([0, 0.2]);
ylim([-2, 2]);
% #+name: fig:modal_raw_meas
% #+caption: Raw measurement of the acceleromter (blue) and of the force sensor at the Hammer tip (red). Zoom on one impact is shown on the right.
% #+RESULTS:
% [[file:figs/modal_raw_meas.png]]
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
%% Frequency Analysis
Nfft = floor(5.0*Fs); % Number of frequency points
@ -176,17 +135,11 @@ Noverlap = floor(Nfft/2); % Overlap for frequency analysis
[pxx_force, f] = pwelch(meas1_raw.Track1, win, Noverlap, Nfft, Fs);
[pxx_acc, ~] = pwelch(meas1_raw.Track2, win, Noverlap, Nfft, Fs);
% The "normalized" amplitude spectral density of the two signals are computed and shown in Figure ref:fig:modal_asd_acc_force.
% Conclusions based on the time domain signals can be clearly seen in the frequency domain (wide frequency content for the force signal and complex dynamics for the accelerometer).
%% Normalized Amplitude Spectral Density of the measured force and acceleration
figure;
hold on;
plot(f, sqrt(pxx_force./max(pxx_force(f<200))), 'DisplayName', 'Force');
plot(f, sqrt(pxx_acc./max(pxx_acc(f<200))), 'DisplayName', 'Acceleration');
plot(f, sqrt(pxx_acc./max(pxx_acc(f<200))), 'DisplayName', '$X_{j}$');
plot(f, sqrt(pxx_force./max(pxx_force(f<200))), 'DisplayName', '$F_{k}$');
hold off;
set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin');
xlabel('Frequency [Hz]'); ylabel('Normalized Spectral Density');
@ -197,12 +150,27 @@ legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
% #+name: fig:modal_asd_acc_force
% #+caption: Normalized Amplitude Spectral Density of the measured force and acceleration
% #+RESULTS:
% #+name: fig:modal_raw_meas_asd
% #+caption: Raw measurement of the acceleromter (blue) and of the force sensor at the Hammer tip (red) (\subref{fig:modal_raw_meas}). Computed Amplitude Spectral Density of the two signals (normalized) (\subref{fig:modal_asd_acc_force})
% #+attr_latex: :options [htbp]
% #+begin_figure
% #+attr_latex: :caption \subcaption{\label{fig:modal_raw_meas}Time domain signals}
% #+attr_latex: :options {0.49\textwidth}
% #+begin_subfigure
% #+attr_latex: :width 0.95\linewidth
% [[file:figs/modal_raw_meas.png]]
% #+end_subfigure
% #+attr_latex: :caption \subcaption{\label{fig:modal_asd_acc_force}Amplitude Spectral Density (normalized)}
% #+attr_latex: :options {0.49\textwidth}
% #+begin_subfigure
% #+attr_latex: :width 0.95\linewidth
% [[file:figs/modal_asd_acc_force.png]]
% #+end_subfigure
% #+end_figure
% The frequency response function from the applied force to the measured acceleration can then be computed (Figure ref:fig:modal_frf_acc_force).
% The frequency response function $H_{jk}$ from the applied force $F_{k}$ to the measured acceleration $X_j$ is then computed and shown Figure ref:fig:modal_frf_acc_force.
% The quality of the obtained data can be estimated using the /coherence/ function, which is shown in Figure ref:fig:modal_coh_acc_force.
% Good coherence is obtained from $20\,\text{Hz}$ to $200\,\text{Hz}$ which corresponds to the frequency range of interest.
%% Compute the transfer function and Coherence
@ -217,16 +185,6 @@ set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log');
xlim([0, 200]);
xticks([0:20:200]);
% #+name: fig:modal_frf_acc_force
% #+caption: Frequency Response Function between the measured force and acceleration
% #+RESULTS:
% [[file:figs/modal_frf_acc_force.png]]
% The coherence between the input and output signals is also computed and found to be good between 20 and 200Hz (Figure ref:fig:modal_coh_acc_force).
%% Frequency Response Function between the force and the acceleration
figure;
plot(f, coh1);

View File

@ -10,33 +10,84 @@ addpath('./mat/'); % Path for data
%% Colors for the figures
colors = colororder;
% Frequency Response Matrix
% <<ssec:modal_frf_matrix>>
% All the Frequency Response Functions measured are combined into one big array called the Frequency Response Matrix.
% The frequency response matrix is an $n \times p \times q$ matrix with:
% - $n$ the number of measurements: $23 \times 3$ (23 accelerometers measuring 3 directions each)
% - $p$ the number of excitation inputs: $3$
% - $q$ the number of frequency points $\omega_i$
% Thus, the FRF matrix is an $69 \times 3 \times 801$ matrix.
% #+name: fig:modal_local_to_global_coordinates
% #+caption: Schematic of the measured motions of a solid body
% #+RESULTS:
% [[file:figs/modal_local_to_global_coordinates.png]]
% For each frequency point $\omega_i$, a 2D matrix is obtained:
% \begin{equation}
% \text{FRF}(\omega_i) = \begin{bmatrix}
% \frac{D_{1_x}}{F_x}(\omega_i) & \frac{D_{1_x}}{F_y}(\omega_i) & \frac{D_{1_x}}{F_z}(\omega_i) \\
% \frac{D_{1_y}}{F_x}(\omega_i) & \frac{D_{1_y}}{F_y}(\omega_i) & \frac{D_{1_y}}{F_z}(\omega_i) \\
% \frac{D_{1_z}}{F_x}(\omega_i) & \frac{D_{1_z}}{F_y}(\omega_i) & \frac{D_{1_z}}{F_z}(\omega_i) \\
% \frac{D_{2_x}}{F_x}(\omega_i) & \frac{D_{2_x}}{F_y}(\omega_i) & \frac{D_{2_x}}{F_z}(\omega_i) \\
% \vdots & \vdots & \vdots \\
% \frac{D_{23_z}}{F_x}(\omega_i) & \frac{D_{23_z}}{F_y}(\omega_i) & \frac{D_{23_z}}{F_z}(\omega_i) \\
% The motion of the rigid body of figure ref:fig:modal_local_to_global_coordinates can be described by its displacement $\vec{\delta}p = [\delta p_x,\ \delta p_y,\ \delta p_z]$ and (small) rotations $[\delta \Omega_x,\ \delta \Omega_y,\ \delta \Omega_z]$ with respect to a reference frame $\{O\}$.
% The motion $\vec{\delta} p_{i}$ of a point $p_i$ can be computed from $\vec{\delta} p$ and $\bm{\delta \Omega}$ using equation eqref:eq:modal_compute_point_response, with $\bm{\delta\Omega}$ defined in equation eqref:eq:modal_rotation_matrix.
% \begin{equation}\label{eq:modal_compute_point_response}
% \vec{\delta} p_{i} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{i} \\
% \end{equation}
% \begin{equation}\label{eq:modal_rotation_matrix}
% \bm{\delta\Omega} = \begin{bmatrix}
% 0 & -\delta\Omega_z & \delta\Omega_y \\
% \delta\Omega_z & 0 & -\delta\Omega_x \\
% -\delta\Omega_y & \delta\Omega_x & 0
% \end{bmatrix}
% \end{equation}
% Writing this in a matrix form for the four points gives eqref:eq:modal_cart_to_acc.
% \begin{equation}\label{eq:modal_cart_to_acc}
% \left[\begin{array}{c}
% \delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
% \end{array}\right] =
% \left[\begin{array}{ccc|ccc}
% 1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
% 0 & 1 & 0 & -p_{1z} & 0 & p_{1x} \\
% 0 & 0 & 1 & p_{1y} & -p_{1x} & 0 \\ \hline
% & \vdots & & & \vdots & \\ \hline
% 1 & 0 & 0 & 0 & p_{4z} & -p_{4y} \\
% 0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
% 0 & 0 & 1 & p_{4y} & -p_{4x} & 0
% \end{array}\right] \left[\begin{array}{c}
% \delta p_x \\ \delta p_y \\ \delta p_z \\ \hline \delta\Omega_x \\ \delta\Omega_y \\ \delta\Omega_z
% \end{array}\right]
% \end{equation}
% Provided that the four sensors are properly located, the system of equation eqref:eq:modal_cart_to_acc can be solved by matrix inversion[fn:5].
% The motion of the solid body expressed in a chosen frame $\{O\}$ can be determined using equation eqref:eq:modal_determine_global_disp.
% Note that this matrix inversion is equivalent to resolving a mean square problem.
% Therefore, having more accelerometers permits to have a better approximation of the motion of the solid body.
% \begin{equation}
% \left[\begin{array}{c}
% \delta p_x \\ \delta p_y \\ \delta p_z \\ \hline \delta\Omega_x \\ \delta\Omega_y \\ \delta\Omega_z
% \end{array}\right] =
% \left[\begin{array}{ccc|ccc}
% 1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
% 0 & 1 & 0 & -p_{1z} & 0 & p_{1x} \\
% 0 & 0 & 1 & p_{1y} & -p_{1x} & 0 \\ \hline
% & \vdots & & & \vdots & \\ \hline
% 1 & 0 & 0 & 0 & p_{4z} & -p_{4y} \\
% 0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
% 0 & 0 & 1 & p_{4y} & -p_{4x} & 0
% \end{array}\right]^{-1} \left[\begin{array}{c}
% \delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
% \end{array}\right] \label{eq:modal_determine_global_disp}
% \end{equation}
% From the CAD model, the position of the center of mass of each considered solid body is computed (see Table ref:tab:modal_com_solid_bodies).
% Then, the position of each accelerometer with respect to the center of mass of the corresponding solid body can easily be derived.
%% Load frequency response matrix
load('frf_matrix.mat', 'freqs', 'frf');
%% Load Accelerometer positions
acc_pos = readtable('mat/acc_pos.txt', 'ReadVariableNames', false);
acc_pos = table2array(acc_pos(:, 1:4));
[~, i] = sort(acc_pos(:, 1));
acc_pos = acc_pos(i, 2:4);
%% Accelerometers ID connected to each solid body
solids = {};
solids.gbot = [17, 18, 19, 20]; % bottom granite
@ -52,189 +103,29 @@ solid_names = fields(solids);
%% Save the acceleromter positions are well as the solid bodies
save('mat/geometry.mat', 'solids', 'solid_names', 'acc_pos');
% #+name: fig:aligned_accelerometers
% #+caption: Aligned measurement of the motion of a solid body
% #+RESULTS:
% [[file:figs/aligned_accelerometers.png]]
% The motion of the rigid body of figure ref:fig:aligned_accelerometers is defined by its displacement $\delta p$ and rotation $\vec{\Omega}$ with respect to the reference frame $\{O\}$.
% The motions at points $1$ and $2$ are:
% \begin{align*}
% \delta p_1 &= \delta p + \Omega \times p_1 \\
% \delta p_2 &= \delta p + \Omega \times p_2
% \end{align*}
% Taking only the $x$ direction:
% \begin{align*}
% \delta p_{x1} &= \delta p_x + \Omega_y p_{z1} - \Omega_z p_{y1} \\
% \delta p_{x2} &= \delta p_x + \Omega_y p_{z2} - \Omega_z p_{y2}
% \end{align*}
% However, we have $p_{1y} = p_{2y}$ and $p_{1z} = p_{2z}$ because of the co-linearity of the two sensors in the $x$ direction, and thus we obtain
% \begin{equation}
% \delta p_{x1} = \delta p_{x2}
% \end{equation}
% #+begin_important
% Two sensors that are measuring the motion of a rigid body in the direction of the line linking the two sensors should measure the same quantity.
% #+end_important
% We can verify that the rigid body assumption is correct by comparing the measurement of the sensors.
% From the table ref:tab:position_accelerometers, we can guess which sensors will give the same results in the X and Y directions.
% Comparison of such measurements in the X direction is shown on figure ref:fig:modal_solid_body_comp_x_dir.
% Similar result is obtained for the Y direction.
meas_dir = 1; % X
exc_dir = 1; % X
% Pair of accelerometers aligned in the X direction
acc_i = [1 , 4 ;
2 , 3 ;
5 , 8 ;
6 , 7 ;
9 , 12;
10, 11;
14, 15;
18, 19;
21, 23];
%% Comparaison of measured frequency response function for in the X directions for accelerometers aligned along X
figure;
tiledlayout(3, 3, 'TileSpacing', 'Compact', 'Padding', 'None');
for i = 1:size(acc_i, 1)
nexttile();
hold on;
plot(freqs, abs(squeeze(frf(meas_dir+3*(acc_i(i, 1)-1), exc_dir, :))), ...
'DisplayName', sprintf('%i', acc_i(i, 1)))
plot(freqs, abs(squeeze(frf(meas_dir+3*(acc_i(i, 2)-1), exc_dir, :))), ...
'DisplayName', sprintf('%i', acc_i(i, 2)))
hold off;
set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log');
if i > 6
xlabel('Frequency [Hz]');
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 1);
else
set(gca, 'XTickLabel',[]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
end
if rem(i, 3) == 1
ylabel('Amplitude');
else
set(gca, 'YTickLabel',[]);
end
xlim([0, 200]); ylim([1e-5, 2e-2]);
end
% TODO Verification of the principle of reciprocity :noexport:
% <<ssec:modal_reciprocity_principle>>
% Because we expect our system to follow the principle of reciprocity.
% That is to say the response $X_j$ at some degree of freedom $j$ due to a force $F_k$ applied on DOF $k$ should be the same as the response $X_k$ due to a force $F_j$:
% \[ H_{jk} = \frac{X_j}{F_k} = \frac{X_k}{F_j} = H_{kj} \]
% This comes from the fact that we expect to have symmetric mass, stiffness and damping matrices.
% In order to access the quality of the data and the validity of the measured FRF, we then check that the reciprocity between $H_{jk}$ and $H_{kj}$ is of an acceptable level.
% We can verify this reciprocity using 3 different pairs of response/force.
dir_names = {'X', 'Y', 'Z'};
figure;
for i = 1:3
subplot(3, 1, i)
a = mod(i, 3)+1;
b = mod(i-2, 3)+1;
hold on;
plot(freqs, abs(squeeze(frf(3*(11-1)+a, b, :))), 'DisplayName', sprintf('$\\frac{F_%s}{D_%s}$', dir_names{a}, dir_names{b}));
plot(freqs, abs(squeeze(frf(3*(11-1)+b, a, :))), 'DisplayName', sprintf('$\\frac{F_%s}{D_%s}$', dir_names{b}, dir_names{a}));
hold off;
set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log');
if i == 3
xlabel('Frequency [Hz]');
else
set(gca, 'XTickLabel',[]);
end
if i == 2
ylabel('Amplitude [$\frac{m/s^2}{N}$]');
end
xlim([0, 200]);
legend('location', 'northwest');
end
% From accelerometer DOFs to solid body DOFs - Matlab Implementation
% First, we initialize a new FRF matrix =FRFs_O= which is an $n \times p \times q$ with:
% - $n$ is the number of DOFs of the considered 6 solid-bodies: $6 \times 6 = 36$
% - $p$ is the number of excitation inputs: $3$
% - $q$ is the number of frequency points $\omega_i$
% #+begin_important
% For each frequency point $\omega_i$, the FRF matrix =FRFs_O= is a $n\times p$ matrix:
% \begin{equation}
% \text{FRF}_\text{O}(\omega_i) = \begin{bmatrix}
% \frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\
% \frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\
% \frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\
% \frac{D_{1,R_x}}{F_x}(\omega_i) & \frac{D_{1,R_x}}{F_y}(\omega_i) & \frac{D_{1,R_x}}{F_z}(\omega_i) \\
% \frac{D_{1,R_y}}{F_x}(\omega_i) & \frac{D_{1,R_y}}{F_y}(\omega_i) & \frac{D_{1,R_y}}{F_z}(\omega_i) \\
% \frac{D_{1,R_z}}{F_x}(\omega_i) & \frac{D_{1,R_z}}{F_y}(\omega_i) & \frac{D_{1,R_z}}{F_z}(\omega_i) \\
% \frac{D_{2,T_x}}{F_x}(\omega_i) & \frac{D_{2,T_x}}{F_y}(\omega_i) & \frac{D_{2,T_x}}{F_z}(\omega_i) \\
% \vdots & \vdots & \vdots \\
% \frac{D_{6,R_z}}{F_x}(\omega_i) & \frac{D_{6,R_z}}{F_y}(\omega_i) & \frac{D_{6,R_z}}{F_z}(\omega_i)
% \end{bmatrix}
% \end{equation}
% where $D_i$ corresponds to the solid body number i.
% #+end_important
% Then, as we know the positions of the accelerometers on each solid body, and we have the response of those accelerometers, we can use the equations derived in the previous section to determine the response of each solid body expressed in the frame $\{O\}$.
FRFs_O = zeros(length(solid_names)*6, 3, 801);
for solid_i = 1:length(solid_names)
solids_i = solids.(solid_names{solid_i});
A = zeros(3*length(solids_i), 6);
for i = 1:length(solids_i)
acc_i = solids_i(i);
A(3*(i-1)+1:3*i, 1:3) = eye(3);
A(3*(i-1)+1:3*i, 4:6) = [ 0 acc_pos(acc_i, 3) -acc_pos(acc_i, 2) ;
-acc_pos(acc_i, 3) 0 acc_pos(acc_i, 1) ;
acc_pos(acc_i, 2) -acc_pos(acc_i, 1) 0];
end
for exc_dir = 1:3
FRFs_O((solid_i-1)*6+1:solid_i*6, exc_dir, :) = A\squeeze(FRFs((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, :));
end
end
% Center of Mass of each solid body
% From solidworks, we can export the position of the center of mass of each solid body considered.
% These are summarized in Table ref:tab:modal_com_solid_bodies
%% Extract the CoM of considered solid bodies
model_com = reshape(table2array(readtable('mat/model_solidworks_com.txt', 'ReadVariableNames', false)), [3, 6]);
% From accelerometer DOFs to solid body DOFs - Expressed at the CoM
% First, we initialize a new FRF matrix which is an $n \times p \times q$ with:
% - $n$ is the number of DOFs of the considered 6 solid-bodies: $6 \times 6 = 36$
% - $p$ is the number of excitation inputs: $3$
% - $q$ is the number of frequency points $\omega_i$
% #+begin_important
% For each frequency point $\omega_i$, the FRF matrix is a $n\times p$ matrix:
% \begin{equation}
% \text{FRF}_\text{CoM}(\omega_i) = \begin{bmatrix}
% #+name: tab:modal_com_solid_bodies
% #+caption: Center of mass of considered solid bodies with respect to the "point of interest"
% #+attr_latex: :environment tabularx :width 0.6\linewidth :align lXXX
% #+attr_latex: :center t :booktabs t
% #+RESULTS:
% | | $X$ [mm] | $Y$ [mm] | $Z$ [mm] |
% |-------------------+----------+----------+----------|
% | Bottom Granite | 45 | 144 | -1251 |
% | Top granite | 52 | 258 | -778 |
% | Translation stage | 0 | 14 | -600 |
% | Tilt Stage | 0 | -5 | -628 |
% | Spindle | 0 | 0 | -580 |
% | Hexapod | -4 | 6 | -319 |
% Using eqref:eq:modal_determine_global_disp, the frequency response matrix $\mathbf{H}_\text{CoM}$ eqref:eq:modal_frf_matrix_com expressing the response at the center of mass of each solid body $D_i$ ($i$ from $1$ to $6$ for the $6$ considered solid bodies) can be computed from the initial acrshort:frf matrix $\mathbf{H}$.
% \begin{equation}\label{eq:modal_frf_matrix_com}
% \mathbf{H}_\text{CoM}(\omega_i) = \begin{bmatrix}
% \frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\
% \frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\
% \frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\
@ -246,14 +137,10 @@ model_com = reshape(table2array(readtable('mat/model_solidworks_com.txt', 'ReadV
% \frac{D_{6,R_z}}{F_x}(\omega_i) & \frac{D_{6,R_z}}{F_y}(\omega_i) & \frac{D_{6,R_z}}{F_z}(\omega_i)
% \end{bmatrix}
% \end{equation}
% where 1, 2, ..., 6 corresponds to the 6 solid bodies.
% #+end_important
% Then, as we know the positions of the accelerometers on each solid body, and we have the response of those accelerometers, we can use the equations derived in the previous section to determine the response of each solid body expressed in their center of mass.
%% Frequency Response Matrix - Response expressed at the CoM of the solid bodies
FRFs_CoM = zeros(length(solid_names)*6, 3, 801);
frfs_CoM = zeros(length(solid_names)*6, 3, 801);
for solid_i = 1:length(solid_names)
% Number of accelerometers fixed to this solid body
@ -273,43 +160,30 @@ for solid_i = 1:length(solid_names)
end
for exc_dir = 1:3
FRFs_CoM((solid_i-1)*6+1:solid_i*6, exc_dir, :) = A\squeeze(frf((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, :));
frfs_CoM((solid_i-1)*6+1:solid_i*6, exc_dir, :) = A\squeeze(frf((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, :));
end
end
%% Save the computed FRF at the CoM
save('mat/frf_com.mat', 'FRFs_CoM');
save('mat/frf_com.mat', 'frfs_CoM');
% Verify that we find the original FRF from the FRF in the global coordinates
% We have computed the Frequency Response Functions Matrix representing the response of the 6 solid bodies in their 6 DOFs with respect to their center of mass.
% Verification of solid body assumption
% <<ssec:modal_solid_body_assumption>>
% From the response of one body in its 6 DOFs, we should be able to compute the FRF of each of its accelerometer fixed to it during the measurement, supposing that this stage is a solid body.
% From the response of one solid body expressed by its 6 acrshortpl:dof (i.e. from $\mathbf{H}_{\text{CoM}}$), and using equation eqref:eq:modal_cart_to_acc, it is possible to compute the response of the same solid body at any considered position.
% In particular, the response at the location of the four accelerometers can be computed and compared with the original measurements $\mathbf{H}$.
% This is what is here done to check if solid body assumption is correct in the frequency band of interest.
% We can then compare the result with the original measurements.
% This will help us to determine if:
% - the previous inversion used is correct
% - the solid body assumption is correct in the frequency band of interest
% From the translation $\delta p$ and rotation $\delta \Omega$ of a solid body and the positions $p_i$ of the accelerometers attached to it, we can compute the response that would have been measured by the accelerometers using the following formula:
% \begin{align*}
% \delta p_1 &= \delta p + \delta\Omega p_1\\
% \delta p_2 &= \delta p + \delta\Omega p_2\\
% \delta p_3 &= \delta p + \delta\Omega p_3\\
% \delta p_4 &= \delta p + \delta\Omega p_4
% \end{align*}
% Thus, we can obtain the FRF matrix =FRFs_A= that gives the responses of the accelerometers to the forces applied by the hammer.
% It is implemented in matlab as follow:
FRFs_A = zeros(size(frf));
%% Compute the FRF at the accelerometer location from the CoM reponses
frfs_A = zeros(size(frf));
% For each excitation direction
for exc_dir = 1:3
% For each solid
for solid_i = 1:length(solid_names)
v0 = squeeze(FRFs_CoM((solid_i-1)*6+1:(solid_i-1)*6+3, exc_dir, :));
W0 = squeeze(FRFs_CoM((solid_i-1)*6+4:(solid_i-1)*6+6, exc_dir, :));
v0 = squeeze(frfs_CoM((solid_i-1)*6+1:(solid_i-1)*6+3, exc_dir, :));
W0 = squeeze(frfs_CoM((solid_i-1)*6+4:(solid_i-1)*6+6, exc_dir, :));
% For each accelerometer attached to the current solid
for acc_i = solids.(solid_names{solid_i})
@ -318,20 +192,17 @@ for exc_dir = 1:3
% pos = acc_pos(acc_i, :).';
posX = [0 pos(3) -pos(2); -pos(3) 0 pos(1) ; pos(2) -pos(1) 0];
FRFs_A(3*(acc_i-1)+1:3*(acc_i-1)+3, exc_dir, :) = v0 + posX*W0;
frfs_A(3*(acc_i-1)+1:3*(acc_i-1)+3, exc_dir, :) = v0 + posX*W0;
end
end
end
% We then compare the original FRF measured for each accelerometer =FRFs= with the "recovered" FRF =FRFs_A= from the global FRF matrix in the common frame.
% The FRF for the 4 accelerometers on the Hexapod are compared on figure ref:fig:recovered_frf_comparison_hexa.
% All the FRF are matching very well in all the frequency range displayed.
% The FRF for accelerometers located on the translation stage are compared on figure ref:fig:recovered_frf_comparison_ty.
% The FRF are matching well until 100Hz.
% The comparison is made for the 4 accelerometers fixed to the micro-hexapod (Figure ref:fig:modal_comp_acc_solid_body_frf).
% The original frequency response functions and the ones computed from the CoM responses are well matching in the frequency range of interested.
% Similar results are obtained for the other solid bodies, indicating that the solid body assumption is valid, and that a multi-body model can be used to represent the dynamics of the micro-station.
% This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3 acrshort:dof) to 36 (6 solid bodies with 6 acrshort:dof).
%% Comparaison of the original accelerometer response and reconstructed response from the solid body response
@ -344,7 +215,7 @@ exc_dir = 1; % Excited direction
accs_i = solids.(solid_names{solid_i}); % Accelerometers fixed to this solid body
figure;
tiledlayout(2, 2, 'TileSpacing', 'Compact', 'Padding', 'None');
tiledlayout(2, 2, 'TileSpacing', 'Tight', 'Padding', 'None');
for i = 1:length(accs_i)
acc_i = accs_i(i);
@ -356,7 +227,7 @@ for i = 1:length(accs_i)
end
set(gca,'ColorOrderIndex',1)
for dir_i = 1:3
plot(freqs, abs(squeeze(FRFs_A(3*(acc_i-1)+dir_i, exc_dir, :))), '--', 'HandleVisibility', 'off');
plot(freqs, abs(squeeze(frfs_A(3*(acc_i-1)+dir_i, exc_dir, :))), '--', 'HandleVisibility', 'off');
end
hold off;
@ -372,7 +243,8 @@ for i = 1:length(accs_i)
set(gca, 'YTickLabel',[]);
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlim([5, 200]); ylim([1e-6, 1e-1]);
legend('location', 'northwest', 'FontSize', 8, 'NumColumns', 1);
set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'log');
xlim([0, 200]); ylim([1e-6, 3e-2]);
xticks([0:20:200]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
end

View File

@ -10,32 +10,29 @@ addpath('./mat/'); % Path for data
%% Colors for the figures
colors = colororder;
% Singular Value Decomposition - Modal Indication Function
% The Mode Indicator Functions are usually used on $n\times p$ FRF matrix where $n$ is a relatively large number of measurement DOFs and $p$ is the number of excitation DOFs, typically 3 or 4.
% Number of modes determination
% <<ssec:modal_number_of_modes>>
% The acrshort:mif is here applied to the $n\times p$ acrshort:frf matrix where $n$ is a relatively large number of measurement DOFs (here $n=69$) and $p$ is the number of excitation DOFs (here $p=3$).
% In these methods, the frequency dependent FRF matrix is subjected to a singular value decomposition analysis which thus yields a small number (3 or 4) of singular values, these also being frequency dependent.
% The complex modal indication function is defined in equation eqref:eq:modal_cmif where the diagonal matrix $\Sigma$ is obtained from a acrlong:svd of the acrshort:frf matrix as shown in equation eqref:eq:modal_svd.
% \begin{equation} \label{eq:modal_cmif}
% [CMIF(\omega)]_{p\times p} = [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p}
% \end{equation}
% These methods are used to *determine the number of modes* present in a given frequency range, to *identify repeated natural frequencies* and to pre-process the FRF data prior to modal analysis.
% \begin{equation} \label{eq:modal_svd}
% [H(\omega)]_{n\times p} = [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H
% \end{equation}
% From the documentation of the modal software:
% #+begin_quote
% The MIF consist of the singular values of the Frequency response function matrix. The number of MIFs equals the number of excitations.
% By the powerful singular value decomposition, the real signal space is separated from the noise space. Therefore, the MIFs exhibit the modes effectively.
% A peak in the MIFs plot usually indicate the existence of a structural mode, and two peaks at the same frequency point means the existence of two repeated modes.
% Moreover, the magnitude of the MIFs implies the strength of the a mode.
% #+end_quote
% The acrshort:mif therefore yields to $p$ values that are also frequency dependent.
% A peak in the acrshort:mif plot indicates the presence of a mode.
% Repeated modes can also be detected by multiple singular values are having peaks at the same frequency.
% The obtained acrshort:mif is shown on Figure ref:fig:modal_indication_function.
% A total of 16 modes are found between 0 and $200\,\text{Hz}$.
% The obtained natural frequencies and associated modal damping are summarized in Table ref:tab:modal_obtained_modes_freqs_damps.
% #+begin_important
% The *Complex Mode Indicator Function* is defined simply by the SVD of the FRF (sub) matrix:
% \begin{align*}
% [H(\omega)]_{n\times p} &= [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H\\
% [CMIF(\omega)]_{p\times p} &= [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p}
% \end{align*}
% #+end_important
% We compute the Complex Mode Indicator Function.
% The result is shown on Figure ref:fig:modal_indication_function.
%% Load frequency response matrix
load('frf_matrix.mat', 'freqs', 'frf');
%% Computation of the modal indication function
MIF = zeros(size(frf, 2), size(frf, 2), size(frf, 3));
@ -58,35 +55,31 @@ xticks([0:20:200]);
xlim([0, 200]);
ylim([1e-6, 2e-2]);
% Composite Response Function
% An alternative is the Composite Response Function $HH(\omega)$ defined as the sum of all the measured FRF:
% \begin{equation}
% HH(\omega) = \sum_j\sum_kH_{jk}(\omega)
% Verification of the modal model validity
% <<ssec:modal_model_validity>>
% In order to check the validity of the modal model, the complete $n \times n$ acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ is first synthesized from the modal parameters.
% Then, the elements of this acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ that were already measured can be compared with the measured acrshort:frf matrix $\mathbf{H}$.
% In order to synthesize the full acrshort:frf matrix, the eigenvectors $\phi_r$ are first organized in a matrix from as shown in equation eqref:eq:modal_eigvector_matrix.
% \begin{equation}\label{eq:modal_eigvector_matrix}
% \Phi = \begin{bmatrix}
% & & & & &\\
% \phi_1 & \dots & \phi_N & \phi_1^* & \dots & \phi_N^* \\
% & & & & &
% \end{bmatrix}_{n \times 2m}
% \end{equation}
% Instead, we choose here to use the sum of the norms of the measured frf:
% \begin{equation}
% HH(\omega) = \sum_j\sum_k \left|H_{jk}(\omega) \right|
% The full acrshort:frf matrix $\mathbf{H}_{\text{syn}}$ can be synthesize using eqref:eq:modal_synthesized_frf.
% \begin{equation}\label{eq:modal_synthesized_frf}
% [\mathbf{H}_{\text{syn}}(\omega)]_{n\times n} = [\Phi]_{n\times2m} [\mathbf{H}_{\text{mod}}(\omega)]_{2m\times2m} [\Phi]_{2m\times n}^T
% \end{equation}
% The result is shown on figure ref:fig:modal_composite_reponse_function.
%% Composite Response Function
figure;
hold on;
plot(freqs, squeeze(sum(sum(abs(frf)))), '-k');
hold off;
xlabel('Frequency [Hz]'); ylabel('Amplitude');
xlim([0, 200]);
xticks([0:20:200]);
% Importation of the modal parameters on Matlab
% The obtained modal parameters are:
% - Resonance frequencies in Hertz
% - Modal damping ratio in percentage
% - (complex) Modes shapes for each measured DoF
% - Modal A and modal B which are parameters important for further normalization
% With $\mathbf{H}_{\text{mod}}(\omega)$ a diagonal matrix representing the response of the different modes eqref:eq:modal_modal_resp.
% \begin{equation}\label{eq:modal_modal_resp}
% \mathbf{H}_{\text{mod}}(\omega) = \text{diag}\left(\frac{1}{a_1 (j\omega - s_1)},\ \dots,\ \frac{1}{a_m (j\omega - s_m)}, \frac{1}{a_1^* (j\omega - s_1^*)},\ \dots,\ \frac{1}{a_m^* (j\omega - s_m^*)} \right)_{2m\times 2m}
% \end{equation}
%% Load modal parameters
@ -123,149 +116,91 @@ for mod_i = 1:mod_n
end
end
% Modal Matrices
% We would like to arrange the obtained modal parameters into two modal matrices:
% \[ \Lambda = \begin{bmatrix}
% s_1 & & 0 \\
% & \ddots & \\
% 0 & & s_N
% \end{bmatrix}_{N \times N}; \quad \Psi = \begin{bmatrix}
% & & \\
% \{\psi_1\} & \dots & \{\psi_N\} \\
% & &
% \end{bmatrix}_{M \times N} \]
% \[ \{\psi_i\} = \begin{Bmatrix} \psi_{i, 1_x} & \psi_{i, 1_y} & \psi_{i, 1_z} & \psi_{i, 2_x} & \dots & \psi_{i, 23_z} \end{Bmatrix}^T \]
% $M$ is the number of DoF: here it is $23 \times 3 = 69$.
% $N$ is the number of mode
eigen_val_M = diag(2*pi*freqs_m.*(-damps_m/100 + j*sqrt(1 - (damps_m/100).^2)));
eigen_vec_M = reshape(mode_shapes, [mod_n, acc_n*dir_n]).';
% Each eigen vector is normalized: $\| \{\psi_i\} \|_2 = 1$
% However, the eigen values and eigen vectors appears as complex conjugates:
% \[ s_r, s_r^*, \{\psi\}_r, \{\psi\}_r^*, \quad r = 1, N \]
% In the end, they are $2N$ eigen values.
% We then build two extended eigen matrices as follow:
% \[ \mathcal{S} = \begin{bmatrix}
% s_1 & & & & & \\
% & \ddots & & & 0 & \\
% & & s_N & & & \\
% & & & s_1^* & & \\
% & 0 & & & \ddots & \\
% & & & & & s_N^*
% \end{bmatrix}_{2N \times 2N}; \quad \Phi = \begin{bmatrix}
% & & & & &\\
% \{\psi_1\} & \dots & \{\psi_N\} & \{\psi_1^*\} & \dots & \{\psi_N^*\} \\
% & & & & &
% \end{bmatrix}_{M \times 2N} \]
%% Create the eigenvalue and eigenvector matrices
eigen_val_M = diag(2*pi*freqs_m.*(-damps_m/100 + j*sqrt(1 - (damps_m/100).^2))); % Lambda = diagonal matrix
eigen_vec_M = reshape(mode_shapes, [mod_n, acc_n*dir_n]).'; % Phi, vecnorm(eigen_vec_M) = 1
% Add complex conjugate eigenvalues and eigenvectors
eigen_val_ext_M = blkdiag(eigen_val_M, conj(eigen_val_M));
eigen_vec_ext_M = [eigen_vec_M, conj(eigen_vec_M)];
% We also build the Modal A and Modal B matrices:
% \begin{equation}
% A = \begin{bmatrix}
% a_1 & & 0 \\
% & \ddots & \\
% 0 & & a_N
% \end{bmatrix}_{N \times N}; \quad B = \begin{bmatrix}
% b_1 & & 0 \\
% & \ddots & \\
% 0 & & b_N
% \end{bmatrix}_{N \times N}
% \end{equation}
% With $a_i$ is the "Modal A" parameter linked to mode i.
%% "Modal A" and "Modal B" matrices
modal_a_M = diag(complex(modal_a(:, 1), modal_a(:, 2)));
modal_b_M = diag(complex(modal_b(:, 1), modal_b(:, 2)));
modal_a_ext_M = blkdiag(modal_a_M, conj(modal_a_M));
modal_b_ext_M = blkdiag(modal_b_M, conj(modal_b_M));
% Matlab Implementation
%% Synthesize the full FRF matrix from the modal model
Hsyn = zeros(acc_n*dir_n, acc_n*dir_n, length(freqs));
for i = 1:length(freqs)
Hsyn(:, :, i) = eigen_vec_ext_M*((j*2*pi*freqs(i)).^2*inv(modal_a_ext_M)/(diag(j*2*pi*freqs(i) - diag(eigen_val_ext_M))))*eigen_vec_ext_M.';
Hsyn(:, :, i) = eigen_vec_ext_M*diag(1./(diag(modal_a_ext_M).*(j*2*pi*freqs(i) - diag(eigen_val_ext_M))))*eigen_vec_ext_M.';
end
% Because the synthesize frequency response functions are representing the displacement response in $[m/N]$, we multiply each element of the FRF matrix by $(j \omega)^2$ in order to obtain the acceleration response in $[m/s^2/N]$.
%% Derivate two times to to have the acceleration response
for i = 1:size(Hsyn, 1)
Hsyn(i, :, :) = squeeze(Hsyn(i, :, :)).*(j*2*pi*freqs).^2;
end
% Original and Synthesize FRF matrix comparison
acc_o = 1; dir_o = 1; dir_i = 1;
% The comparison between the original measured frequency response functions and the synthesized ones from the modal model is done in Figure ref:fig:modal_comp_acc_frf_modal.
% Whether the obtained match can be considered good or bad is quite arbitrary.
% Yet, the modal model seems to be able to represent the coupling between different nodes and different direction which is quite important in a control point of view.
% This can be seen in Figure ref:fig:modal_comp_acc_frf_modal_3 that shows the frequency response function between a force applied on node 11 (i.e. on the translation stage) in the $y$ direction to the measured acceleration at node $2$ (i.e. at the top of the micro-hexapod) in the $x$ direction.
acc_o = 11; dir_o = 3;
acc_i = 11; dir_i = 3;
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(freqs, abs(squeeze(frf(3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Original');
plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(11-1)+dir_i, :))), 'DisplayName', 'Synthesize');
plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured');
plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized');
hold off;
set(gca, 'xscale', 'lin');
set(gca, 'yscale', 'log');
set(gca, 'XTickLabel',[]);
xlabel('Frequency [Hz]');
ylabel('Magnitude [$\frac{m/s^2}{N}$]');
title(sprintf('From acc %i %s to acc %i %s', 11, dirs(dir_i), acc_o, dirs(dir_o)))
legend('location', 'northwest');
ax2 = subplot(2, 1, 2);
hold on;
plot(freqs, mod(180/pi*phase(squeeze(frf(3*(acc_o-1)+dir_o, dir_i, :)))+180, 360)-180);
plot(freqs, mod(180/pi*phase(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(11-1)+dir_i, :)))+180, 360)-180);
hold off;
yticks(-360:90:360); ylim([-180, 180]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
ldg.ItemTokenSize = [10, 1];
xticks([0:40:200]);
xlim([1, 200]);
ylim([1e-6, 1e-1]);
% Synthesize FRF that has not yet been measured
accs = [1]; dirs = [1:3];
acc_o = 15; dir_o = 3;
acc_i = 11; dir_i = 3;
figure;
ax1 = subplot(2, 1, 1);
hold on;
for acc_i = accs
for dir_i = dirs
plot(freqs, abs((1./(j*2*pi*freqs').^2).*squeeze(Hsyn(3*(acc_i-1)+dir_i, 3*(acc_i-1)+dir_i, :))), 'DisplayName', sprintf('Acc %i - %s', acc_i, dirs(dir_i)));
end
end
plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured');
plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
set(gca, 'XTickLabel',[]);
ylabel('Magnitude [$\frac{m}{N}$]');
legend('location', 'southwest');
ax2 = subplot(2, 1, 2);
hold on;
for acc_i = accs
for dir_i = dirs
plot(freqs, mod(180/pi*phase((1./(j*2*pi*freqs').^2).*squeeze(Hsyn(3*(acc_i-1)+dir_i, 3*(acc_i-1)+dir_i, :)))+180, 360)-180);
end
end
hold off;
yticks(-360:90:360); ylim([-180, 180]);
set(gca, 'xscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
set(gca, 'xscale', 'lin');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]');
ylabel('Magnitude [$\frac{m/s^2}{N}$]');
ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
ldg.ItemTokenSize = [10, 1];
xticks([0:40:200]);
xlim([1, 200]);
ylim([1e-6, 1e-1]);
acc_o = 2; dir_o = 1;
acc_i = 11; dir_i = 2;
figure;
hold on;
plot(freqs, abs(squeeze(frf( 3*(acc_o-1)+dir_o, dir_i, :))), 'DisplayName', 'Measured');
plot(freqs, abs(squeeze(Hsyn(3*(acc_o-1)+dir_o, 3*(acc_i-1)+dir_i, :))), 'DisplayName', 'Synthesized');
hold off;
set(gca, 'xscale', 'lin');
set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]');
ylabel('Magnitude [$\frac{m/s^2}{N}$]');
ldg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
ldg.ItemTokenSize = [10, 1];
xticks([0:40:200]);
xlim([1, 200]);
ylim([1e-6, 1e-1]);

View File

@ -1,12 +1,38 @@
@article{wang11_extrac_real_modes_physic_matric,
author = {Tong Wang and Lingmi Zhang and Kong Fah Tee},
title = {Extraction of Real Modes and Physical Matrices From Modal
Testing},
journal = {Earthquake Engineering and Engineering Vibration},
volume = 10,
number = 2,
pages = {219-227},
year = 2011,
doi = {10.1007/s11803-011-0060-6},
url = {https://doi.org/10.1007/s11803-011-0060-6},
DATE_ADDED = {Tue Jul 9 15:51:21 2019},
}
@article{pastor12_modal_assur_criter,
author = {Miroslav Pastor and Michal Binda and Tom{\'a}{\v{s}} Har{\v{c}}arik},
title = {Modal Assurance Criterion},
journal = {Procedia Engineering},
volume = {48},
number = {nil},
pages = {543-548},
year = {2012},
doi = {10.1016/j.proeng.2012.09.551},
url = {https://doi.org/10.1016/j.proeng.2012.09.551},
DATE_ADDED = {Thu Jul 11 13:51:57 2019},
}
@book{ewins00_modal,
author = {Ewins, DJ},
title = {Modal testing: theory, practice and application},
year = 2000,
year = {2000},
publisher = {Wiley-Blackwell},
address = {Baldock, Hertfordshire, England Philadelphia, PA},
isbn = 0863802184,
journal = {Research studies Pre, 2nd ed., ISBN-13},
keywords = {favorite, identification},
pages = {978--0863802188},
isbn = {0863802184},
address = {Baldock, Hertfordshire, England Philadelphia, PA},
keywords = {favorite, identification},
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,8 +1,20 @@
% Created 2024-06-26 Wed 17:58
% Created 2024-10-24 Thu 19:33
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt}
\input{preamble.tex}
\newacronym{nass}{NASS}{Nano Active Stabilization System}
\newacronym{asd}{ASD}{Amplitude Spectral Density}
\newacronym{psd}{PSD}{Power Spectral Density}
\newacronym{frf}{FRF}{Frequency Response Function}
\newacronym{dof}{DoF}{Degree of freedom}
\newacronym{svd}{SVD}{Singular Value Decomposition}
\newacronym{mif}{MIF}{Mode Indicator Functions}
\newglossaryentry{psdx}{name=\ensuremath{\Phi_{x}},description={{Power spectral density of signal $x$}}}
\newglossaryentry{asdx}{name=\ensuremath{\Gamma_{x}},description={{Amplitude spectral density of signal $x$}}}
\newglossaryentry{cpsx}{name=\ensuremath{\Phi_{x}},description={{Cumulative Power Spectrum of signal $x$}}}
\newglossaryentry{casx}{name=\ensuremath{\Gamma_{x}},description={{Cumulative Amplitude Spectrum of signal $x$}}}
\input{preamble_extra.tex}
\bibliography{modal-analysis.bib}
\author{Dehaeze Thomas}
\date{\today}
@ -12,7 +24,7 @@
pdftitle={Micro-Station - Modal Analysis},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 29.3 (Org mode 9.6)},
pdfcreator={Emacs 29.4 (Org mode 9.6)},
pdflang={English}}
\usepackage{biblatex}
@ -23,47 +35,47 @@
\clearpage
In order to further improve the accuracy of the performance predictions, a model that better represents the micro-station dynamics is required.
A multi-body model, consisting of several rigid bodies connected by kinematic constraints (i.e. joints) and springs and damper elements, is a good candidate to model the micro-station.
To further improve the accuracy of the performance predictions, a model that better represents the micro-station dynamics is required.
A multi-body model consisting of several rigid bodies connected by kinematic constraints (i.e. joints), springs and damper elements is a good candidate to model the micro-station.
Even though the inertia of each solid body can easily be estimated from its geometry and its material density, it is more difficult to properly estimate the stiffness and damping properties of the guiding elements connecting each solid body.
The experimental modal analysis will be useful to verify that a multi-body model can represent accurately the dynamics of the micro-station and to help tuning the model.
Although the inertia of each solid body can easily be estimated from its geometry and material density, it is more difficult to properly estimate the stiffness and damping properties of the guiding elements connecting each solid body.
Experimental modal analysis will be use to tune the model, and to verify that a multi-body model can accurately represent the dynamics of the micro-station.
The approach of tuning the multi-body model from measurements is illustrated in Figure \ref{fig:modal_vibration_analysis_procedure}.
The tuning approach for the multi-body model based on measurements is illustrated in Figure \ref{fig:modal_vibration_analysis_procedure}.
First, a \emph{response model} is obtained, which corresponds to a set of frequency response functions computed from experimental measurements.
From this response model, and modal model can be computed, which consists of two matrices: one containing the natural frequencies and damping factors of the considered modes, and another one describing the mode shapes.
This modal model can then be used to tune the spatial model (i.e. the multi-body model), that is to say to tune the mass spring and damping properties of the considered solid bodies.
From this response model, the modal model can be computed, which consists of two matrices: one containing the natural frequencies and damping factors of the considered modes, and another describing the mode shapes.
This modal model can then be used to tune the spatial model (i.e. the multi-body model), that is, to tune the mass of the considering solid bodies and the springs and dampers connecting the solid bodies.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_vibration_analysis_procedure.png}
\caption{\label{fig:modal_vibration_analysis_procedure}Figure caption}
\caption{\label{fig:modal_vibration_analysis_procedure}Three models of the same structure. The goal is to tune a spatial model (i.e. mass, stiffness and damping properties) from a response model. The modal model can be used as an intermediate step.}
\end{figure}
The measurement setup used to obtain the response model is presented in Section \ref{sec:modal_meas_setup}.
This includes the instrumentation used (i.e. instrumented hammer, accelerometers and acquisition system), the test planing, and a first analysis of the obtained signals.
The measurement setup used to obtain the response model is described in Section \ref{sec:modal_meas_setup}.
This includes the instrumentation used (i.e. instrumented hammer, accelerometers and acquisition system), test planing, and a first analysis of the obtained signals.
In Section \ref{sec:modal_frf_processing}, the obtained frequency response functions between the forces applied using the instrumented hammer and the various accelerometers fixed to the structure are computed.
These measurements are projected at the center of mass of each considered solid body to ease the further use of the results.
In Section \ref{sec:modal_frf_processing}, the obtained frequency response functions between the forces applied by the instrumented hammer and the accelerometers fixed to the structure are computed.
These measurements are projected at the center of mass of each considered solid body to facilitate the further use of the results.
The solid body assumption is then verified, validating the use of the multi-body model.
Finally, the modal analysis is performed in Section \ref{sec:modal_analysis}.
It shows how complex the micro-station dynamics is, and the necessity of the developed more complex multi-body model.
This shows how complex the micro-station dynamics is, and the necessity of having a model representing its complex dynamics.
\chapter{Measurement Setup}
\label{sec:modal_meas_setup}
In order to perform an experimental modal analysis, a proper measurement setup is key.
This include using appropriate instrumentation (presented in Section \ref{ssec:modal_instrumentation}) and properly preparing the structure to be measured (Section \ref{ssec:modal_test_preparation}).
Then, the location of the measured motion (Section \ref{ssec:modal_accelerometers}) and the location of the hammer impacts (Section \ref{ssec:modal_hammer_impacts}) have to be chosen carefully.
Obtained force and acceleration signals are shown in Section \ref{ssec:modal_measured_signals}, and the quality of the measured data is verified.
In order to perform an experimental modal analysis, a suitable measurement setup is essential.
This includes using appropriate instrumentation (presented in Section \ref{ssec:modal_instrumentation}) and properly preparing the structure to be measured (Section \ref{ssec:modal_test_preparation}).
Then, the locations of the measured motions (Section \ref{ssec:modal_accelerometers}) and the locations of the hammer impacts (Section \ref{ssec:modal_hammer_impacts}) have to be chosen carefully.
The obtained force and acceleration signals are described in Section \ref{ssec:modal_measured_signals}, and the quality of the measured data is assessed.
\section{Used Instrumentation}
\label{ssec:modal_instrumentation}
Three equipment are key to perform a good modal analysis.
Three type of equipment are essential for a good modal analysis.
First, \emph{accelerometers} are used to measure the response of the structure.
Here, 3-axis accelerometers\footnote{PCB 393B05. Sensitivity is \(10\,V/g\), measurement range is \(0.5\,g\) and bandwidth is \(0.7\) to \(450\,\text{Hz}\).} shown in figure \ref{fig:modal_accelero_M393B05} are used.
These accelerometers are glued to the micro-station using a thin layer of wax for best results \cite[chapt. 3.5.7]{ewins00_modal}.
Here, 3-axis accelerometers\footnote{PCB 356B18. Sensitivity is \(1\,V/g\), measurement range is \(\pm 5\,g\) and bandwidth is \(0.5\) to \(5\,\text{kHz}\).} shown in figure \ref{fig:modal_accelero_M393B05} are used.
These accelerometers were glued to the micro-station using a thin layer of wax for best results \cite[chapt. 3.5.7]{ewins00_modal}.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
@ -87,56 +99,54 @@ These accelerometers are glued to the micro-station using a thin layer of wax fo
\caption{\label{fig:modal_analysis_instrumentation}Instrumentation used for the modal analysis}
\end{figure}
Then, an \emph{instrumented hammer}\footnote{Kistler 9722A2000. Sensitivity of \(2.3\,mV/N\) and measurement range of \(2\,kN\)} (figure \ref{fig:modal_instrumented_hammer}) is used to apply forces to the structure in a controlled way.
Tests have been conducted to determine the most suitable hammer tip (ranging from a metallic one to a soft plastic one).
The softer tip has been found to give best results as it injects more energy in the low frequency range where the coherence was low, such that the overall coherence was improved.
Then, an \emph{instrumented hammer}\footnote{Kistler 9722A2000. Sensitivity of \(2.3\,mV/N\) and measurement range of \(2\,kN\)} (figure \ref{fig:modal_instrumented_hammer}) is used to apply forces to the structure in a controlled manner.
Tests were conducted to determine the most suitable hammer tip (ranging from a metallic one to a soft plastic one).
The softer tip was found to give best results as it injects more energy in the low-frequency range where the coherence was low, such that the overall coherence was improved.
Finally, an \emph{acquisition system}\footnote{OROS OR36. 24bits signal-delta ADC.} (figure \ref{fig:modal_oros}) is used to acquire the injected force and the response accelerations in a synchronized way and with sufficiently low noise.
Finally, an \emph{acquisition system}\footnote{OROS OR36. 24bits signal-delta ADC.} (figure \ref{fig:modal_oros}) is used to acquire the injected force and response accelerations in a synchronized manner and with sufficiently low noise.
\section{Structure Preparation and Test Planing}
\label{ssec:modal_test_preparation}
In order to obtain meaningful results, the modal analysis of the micro-station in performed \emph{in-situ}.
To do so, all the micro-station stages controllers are turned ``ON''.
This is especially important for stages for which the stiffness is provided by local feedback control, which is case for the air bearing spindle, and the translation stage.
If these local feedback control were turned OFF, this would have resulted in very low frequency modes difficult to measure in practice, and this would also have lead to decoupled dynamics which would not be the case in practice.
To obtain meaningful results, the modal analysis of the micro-station in performed \emph{in-situ}.
To do so, all the micro-station stage controllers are turned ``ON''.
This is especially important for stages for which the stiffness is provided by local feedback control, such as the air bearing spindle, and the translation stage.
If these local feedback controls were turned OFF, this would have resulted in very low-frequency modes that were difficult to measure in practice, and it would also have led to decoupled dynamics, which would not be the case in practice.
The top part representing the active stabilization stage has been disassembled in order to reduce the complexity of the dynamics and also because the active stabilization stage and the sample will be added in the multi-body model afterwards.
The top part representing the active stabilization stage was disassembled as the active stabilization stage will be added in the multi-body model afterwards.
To perform the modal analysis from the measured responses, the \(n \times n\) frequency response function matrix \(\mathbf{H}\) needs to be measured, where \(n\) is the considered number of degrees of freedom.
The \(H_{jk}\) element of this \acrfull{frf} matrix corresponds to the frequency response function from a force \(F_k\) applied at \acrfull{dof} \(k\) to the displacement of the structure \(X_j\) at \acrshort{dof} \(j\).
Measuring this \acrshort{frf} matrix is time consuming as it requires to make \(n \times n\) measurements.
However, due to the principle of reciprocity (\(H_{jk} = H_{kj}\)) and using the \emph{point measurement} (\(H_{jj}\)), it is possible to reconstruct the full matrix by measuring only one column or one line of the matrix \(\mathbf{H}\) \cite[chapt. 5.2]{ewins00_modal}.
Therefore, a minimum set of \(n\) frequency response functions is required.
This can be done either by measuring the response \(X_{j}\) at a fixed \acrshort{dof} \(j\) while applying forces \(F_{i}\) for at all \(n\) considered \acrshort{dof}, or by applying a force \(F_{k}\) at a fixed \acrshort{dof} \(k\) and measuring the response \(X_{i}\) for all \(n\) \acrshort{dof}.
To perform the modal-analysis from the measured responses, the \(n \times n\) frequency response function matrix \(\mathbf{H}\) needs to be measured, where \(n\) is the considered number of degrees of freedom.
The \(H_{jk}\) element of this FRF matrix corresponds to the frequency response function from a force \(F_k\) applied at DoF \(k\) to the displacement of the structure \(X_j\) at DoF \(j\).
Measuring this FRF matrix is very time consuming as it requires to make \(n^2\) measurements.
However thanks to the principle of reciprocity (\(H_{jk} = H_{kj}\)) and using the \emph{point measurement} (\(H_{jj}\)), it is possible to reconstruct the full matrix by measuring only one column or one line of the matrix \(\mathbf{H}\) \cite[chapt. 5.2]{ewins00_modal}.
Therefore, a minimum set of \(n\) frequency response functions needs to be measured.
This can be done either by measuring the response \(X_{j}\) at a fixed DoF \(j\) while applying forces \(F_{i}\) for at all \(n\) considered DoF, or by applying a force \(F_{k}\) at a fixed DoF \(k\) and measuring the response \(X_{i}\) for all \(n\) DoF.
It is however not advised to measure only one row or one column as one or more modes may be missed by an unfortunate choice of force or acceleration measured locations.
In this modal-analysis, it is chosen to measure the response of the structure at all considered DoF, and to excite the structure at one location in three directions in order to have some redundancy and to make sure that all modes are properly excited.
It is however not advised to measure only one row or one column, as one or more modes may be missed by an unfortunate choice of force or acceleration measurement location (for instance if the force is applied at a vibration node of a particular mode).
In this modal analysis, it is chosen to measure the response of the structure at all considered \acrshort{dof}, and to excite the structure at one location in three directions in order to have some redundancy, and to ensure that all modes are properly identified.
\section{Location of the Accelerometers}
\label{ssec:modal_accelerometers}
The location of the accelerometers fixed to the micro-station is essential as it defines where the dynamics is identified.
A total of 23 accelerometers are fixed to the six key stages of the micro station: the lower and upper granites, the translation stage, the tilt stage, the spindle and the micro hexapod.
The position of the accelerometers are visually shown on a CAD model in Figure \ref{fig:modal_location_accelerometers} and their precise locations with respect to a frame located at the point of interest are summarized in Table \ref{tab:modal_position_accelerometers}.
The location of the accelerometers fixed to the micro-station is essential because it defines where the dynamics is measured.
A total of 23 accelerometers were fixed to the six key stages of the micro station: the lower and upper granites, the translation stage, the tilt stage, the spindle and the micro hexapod.
The positions of the accelerometers are visually shown on a CAD model in Figure \ref{fig:modal_location_accelerometers} and their precise locations with respect to a frame located at the point of interest are summarized in Table \ref{tab:modal_position_accelerometers}.
Pictures of the accelerometers fixed to the translation stage and to the micro-hexapod are shown in Figure \ref{fig:modal_accelerometer_pictures}.
As all key stages of the micro-station are foreseen to behave as solid bodies, only 6 DoF can be considered per solid body.
However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured DoF) for each considered solid body to have some redundancy and to be able to verify the solid body assumption (see Section \ref{ssec:modal_solid_body_assumption}).
As all key stages of the micro-station are expected to behave as solid bodies, only 6 \acrshort{dof} can be considered for each solid body.
However, it was chosen to use four 3-axis accelerometers (i.e. 12 measured \acrshort{dof}) for each considered solid body to have some redundancy and to be able to verify the solid body assumption (see Section \ref{ssec:modal_solid_body_assumption}).
\begin{minipage}[b]{0.68\linewidth}
\begin{minipage}[t]{0.60\linewidth}
\begin{center}
\includegraphics[scale=1,width=0.9\linewidth]{figs/modal_location_accelerometers.png}
\captionof{figure}{\label{fig:modal_location_accelerometers}Position of the accelerometers using SolidWorks}
\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_location_accelerometers.png}
\captionof{figure}{\label{fig:modal_location_accelerometers}Position of the accelerometers}
\end{center}
\end{minipage}
\hfill
\begin{minipage}[b]{0.31\linewidth}
\begin{center}
\scriptsize
\begin{tabularx}{\linewidth}{Xcccc}
\begin{minipage}[b]{0.38\linewidth}
\begin{scriptsize}
\captionof{table}{\label{tab:modal_position_accelerometers}Positions in mm}
\begin{tabularx}{\linewidth}{Xccc}
\toprule
& \(x\) & \(y\) & \(z\)\\
\midrule
@ -165,13 +175,9 @@ Hexapod & 64 & 64 & -270\\
Hexapod & 64 & -64 & -270\\
\bottomrule
\end{tabularx}
\captionof{table}{\label{tab:modal_position_accelerometers}Accelerometer positions}
\end{center}
\end{scriptsize}
\end{minipage}
\begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth}
\begin{center}
@ -185,17 +191,16 @@ Hexapod & 64 & -64 & -270\\
\end{center}
\subcaption{\label{fig:modal_accelerometers_hexapod} Micro-Hexapod}
\end{subfigure}
\caption{\label{fig:modal_accelerometer_pictures}Accelerometers fixed on the micro-station}
\caption{\label{fig:modal_accelerometer_pictures}Accelerometers fixed on the micro-station stages}
\end{figure}
\section{Hammer Impacts}
\label{ssec:modal_hammer_impacts}
The chosen location of the hammer impact corresponds to the location of accelerometer number \(11\) fixed to the translation stage.
It was chosen to match the location of one accelerometer, because a \emph{point measurement} (i.e. a measurement of \(H_{kk}\)) is necessary to be able to reconstruct the full FRF matrix \cite{ewins00_modal}.
The selected location of the hammer impact corresponds to the location of accelerometer number \(11\) fixed to the translation stage.
It was chosen to match the location of one accelerometer, because a \emph{point measurement} (i.e. a measurement of \(H_{kk}\)) is necessary to be able to reconstruct the full \acrshort{frf} matrix \cite{ewins00_modal}.
The impacts are performed in three directions, which are shown in figures \ref{fig:modal_impact_x}, \ref{fig:modal_impact_y} and \ref{fig:modal_impact_z}.
This excitation point and the three considered directions allows to properly excite all the modes in the frequency band of interest and to provide good coherence for all the accelerometers as will be shown in the next section.
The impacts were performed in three directions, as shown in figures \ref{fig:modal_impact_x}, \ref{fig:modal_impact_y} and \ref{fig:modal_impact_z}.
\begin{figure}[htbp]
\begin{subfigure}{0.33\textwidth}
@ -222,12 +227,13 @@ This excitation point and the three considered directions allows to properly exc
\section{Force and Response signals}
\label{ssec:modal_measured_signals}
The force sensor and the accelerometers signals are shown in the time domain in Figure \ref{fig:modal_raw_meas}.
Sharp ``impacts'' can be seen for the force sensor, indicating wide frequency band excitation.
For the accelerometer, many resonances can be seen on the right, indicating complex dynamics.
The force sensor of the instrumented hammer and the accelerometer signals are shown in the time domain in Figure \ref{fig:modal_raw_meas}.
Sharp ``impacts'' can be observed for the force sensor, indicating wide frequency band excitation.
For the accelerometer, a much more complex signal can be observed, indicating complex dynamics.
The ``normalized'' amplitude spectral density of the two signals are computed and shown in Figure \ref{fig:modal_asd_acc_force}.
Conclusions based on the time domain signals can be clearly seen in the frequency domain (wide frequency content for the force signal and complex dynamics for the accelerometer).
The ``normalized'' \acrfull{asd} of the two signals were computed and shown in Figure \ref{fig:modal_asd_acc_force}.
Conclusions based on the time domain signals can be clearly observed in the frequency domain (wide frequency content for the force signal and complex dynamics for the accelerometer).
Similar results were obtained for all measured frequency response functions.
\begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth}
@ -242,11 +248,11 @@ Conclusions based on the time domain signals can be clearly seen in the frequenc
\end{center}
\subcaption{\label{fig:modal_asd_acc_force}Amplitude Spectral Density (normalized)}
\end{subfigure}
\caption{\label{fig:modal_raw_meas_asd}Raw measurement of the acceleromter (blue) and of the force sensor at the Hammer tip (red) (\subref{fig:modal_raw_meas}). Computed Amplitude Spectral Density of the two signals (normalized) (\subref{fig:modal_asd_acc_force})}
\caption{\label{fig:modal_raw_meas_asd}Raw measurement of the accelerometer (blue) and of the force sensor at the Hammer tip (red) (\subref{fig:modal_raw_meas}). Computed Amplitude Spectral Densities of the two signals (normalized) (\subref{fig:modal_asd_acc_force})}
\end{figure}
The frequency response function \(H_{jk}\) from the applied force \(F_{k}\) to the measured acceleration \(X_j\) is then computed and shown Figure \ref{fig:modal_frf_acc_force}.
The quality of the obtained data can be estimated using the \emph{coherence} function, which is shown in Figure \ref{fig:modal_coh_acc_force}.
The quality of the obtained data can be estimated using the \emph{coherence} function (Figure \ref{fig:modal_coh_acc_force}).
Good coherence is obtained from \(20\,\text{Hz}\) to \(200\,\text{Hz}\) which corresponds to the frequency range of interest.
\begin{figure}[htbp]
@ -267,11 +273,11 @@ Good coherence is obtained from \(20\,\text{Hz}\) to \(200\,\text{Hz}\) which co
\chapter{Frequency Analysis}
\label{sec:modal_frf_processing}
All measurements where conducted and a \(n \times p \times q\) Frequency Response Functions Matrix were computed with:
After all measurements are conducted, a \(n \times p \times q\) \acrlongpl{frf} matrix can be computed with:
\begin{itemize}
\item \(n = 69\): the number of output measured accelerations (23 3-axis accelerometers)
\item \(p = 3\): the number of input force excitations
\item \(q = 801\): the number of frequency points \(\omega_{i}\)
\item \(n = 69\): number of output measured acceleration (23 3-axis accelerometers)
\item \(p = 3\): number of input force excitation
\item \(q = 801\): number of frequency points \(\omega_{i}\)
\end{itemize}
For each frequency point \(\omega_{i}\), a 2D complex matrix is obtained that links the 3 force inputs to the 69 output accelerations \eqref{eq:modal_frf_matrix_raw}.
@ -287,39 +293,33 @@ For each frequency point \(\omega_{i}\), a 2D complex matrix is obtained that li
\end{bmatrix}
\end{equation}
However, for the multi-body model being developed, only 6 solid bodies are considered, namely: the bottom granite, the top granite, the translation stage, the tilt stage, the spindle and the hexapod.
However, for the multi-body model being developed, only 6 solid bodies are considered, namely: the bottom granite, the top granite, the translation stage, the tilt stage, the spindle and the micro-hexapod.
Therefore, only \(6 \times 6 = 36\) degrees of freedom are of interest.
Therefore, the objective of this section is to to process the Frequency Response Matrix to reduce the number of measured \acrshort{dof} from 69 to 36.
The objective in this section is therefore to process the Frequency Response Matrix to reduce the number of measured DoFs from 69 to 36.
In order to be able to perform this reduction of measured DoFs, the rigid body assumption first needs to be verified (Section \ref{ssec:modal_solid_body_first_check}).
The coordinate transformation from accelerometers DoFs to the solid body 6 DoFs (three translations and three rotations) is performed in Section \ref{ssec:modal_acc_to_solid_dof}.
The coordinate transformation from accelerometers \acrshort{dof} to the solid body 6 \acrshortpl{dof} (three translations and three rotations) is performed in Section \ref{ssec:modal_acc_to_solid_dof}.
The \(69 \times 3 \times 801\) frequency response matrix is then reduced to a \(36 \times 3 \times 801\) frequency response matrix where the motion of each solid body is expressed with respect to its center of mass.
To further validate this reduction of DoF and the solid body assumption, the frequency response function at the accelerometer location are synthesized from the reduced frequency response matrix and are compared with the initial measurements in Section \ref{ssec:modal_solid_body_assumption}.
\section{First verification of the solid body assumption}
\label{ssec:modal_solid_body_first_check}
To validate this reduction of \acrshort{dof} and the solid body assumption, the frequency response function at the accelerometer location are ``reconstructed'' from the reduced frequency response matrix and are compared with the initial measurements in Section \ref{ssec:modal_solid_body_assumption}.
\section{From accelerometer DOFs to solid body DOFs}
\label{ssec:modal_acc_to_solid_dof}
In this section, it is shown that two accelerometers fixed to a \emph{rigid body} at positions \(\vec{p}_1\) and \(\vec{p}_2\) such that \(\vec{p}_2 = \vec{p}_1 + \alpha \vec{x}\) will measure the same acceleration in the \(\vec{x}\) direction.
Such situation is illustrated in Figure \ref{fig:modal_aligned_accelerometers}.
Let us consider the schematic shown in Figure \ref{fig:modal_local_to_global_coordinates} where the motion of a solid body is measured at 4 distinct locations (in \(x\), \(y\) and \(z\) directions).
The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 \acrshort{dof} of the solid body expressed in the frame \(\{O\}\).
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_aligned_accelerometers.png}
\caption{\label{fig:modal_aligned_accelerometers}Aligned measurement of the motion of a solid body}
\includegraphics[scale=1]{figs/modal_local_to_global_coordinates.png}
\caption{\label{fig:modal_local_to_global_coordinates}Schematic of the measured motions of a solid body}
\end{figure}
The motion of the rigid body of figure \ref{fig:modal_aligned_accelerometers} is here described by its displacement \(\vec{\delta}p = [\delta p_x,\ \delta p_y,\ \delta p_z]\) and (small) rotations \([\delta \Omega_x,\ \delta \Omega_y,\ \delta \Omega_z]\) with respect to a reference frame \(\{O\}\).
The motion of the rigid body of figure \ref{fig:modal_local_to_global_coordinates} can be described by its displacement \(\vec{\delta}p = [\delta p_x,\ \delta p_y,\ \delta p_z]\) and (small) rotations \([\delta \Omega_x,\ \delta \Omega_y,\ \delta \Omega_z]\) with respect to the reference frame \(\{O\}\).
The motion of points \(p_1\) and \(p_2\) can be computed from \(\vec{\delta} p\) and \(\bm{\delta \Omega}\) \eqref{eq:modal_p1_p2_motion}, with \(\bm{\delta\Omega}\) defined in \eqref{eq:modal_rotation_matrix}.
The motion \(\vec{\delta} p_{i}\) of a point \(p_i\) can be computed from \(\vec{\delta} p\) and \(\bm{\delta \Omega}\) using equation \eqref{eq:modal_compute_point_response}, with \(\bm{\delta\Omega}\) defined in equation \eqref{eq:modal_rotation_matrix}.
\begin{subequations}\label{eq:modal_p1_p2_motion}
\begin{align}
\vec{\delta} p_{1} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{1} \\
\vec{\delta} p_{2} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{2}
\end{align}
\end{subequations}
\begin{equation}\label{eq:modal_compute_point_response}
\vec{\delta} p_{i} &= \vec{\delta} p + \bm{\delta \Omega} \cdot \vec{p}_{i} \\
\end{equation}
\begin{equation}\label{eq:modal_rotation_matrix}
\bm{\delta\Omega} = \begin{bmatrix}
@ -329,52 +329,12 @@ The motion of points \(p_1\) and \(p_2\) can be computed from \(\vec{\delta} p\)
\end{bmatrix}
\end{equation}
Considering only the \(x\) direction, equation \eqref{eq:modal_p1_p2_x_motion} is obtained.
\begin{subequations}\label{eq:modal_p1_p2_x_motion}
\begin{align}
\delta p_{x1} &= \delta p_x + \delta \Omega_y p_{z1} - \delta \Omega_z p_{y1} \\
\delta p_{x2} &= \delta p_x + \delta \Omega_y p_{z2} - \delta \Omega_z p_{y2}
\end{align}
\end{subequations}
Because the two sensors are co-linearity in the \(x\) direction, \(p_{1y} = p_{2y}\) and \(p_{1z} = p_{2z}\), and \eqref{eq:modal_colinear_sensors_equal} is obtained.
\begin{equation}\label{eq:modal_colinear_sensors_equal}
\boxed{\delta p_{x1} = \delta p_{x2}}
\end{equation}
It is therefore concluded that two position sensors fixed to a rigid body will measure the same quantity in the direction ``in line'' the two sensors.
Such property can be used to verify that the considered stages are indeed behaving as rigid body in the frequency band of interest.
From Table \ref{tab:modal_position_accelerometers}, the pairs of accelerometers that aligned in the X and Y directions can be identified.
The response in the X direction of pairs of sensors aligned in the X direction are compared in Figure \ref{fig:modal_solid_body_comp_x_dir}.
A good match is observed up to 200Hz.
Similar result is obtained for the Y direction.
This therefore indicates that the considered bodies are behaving as solid bodes in the frequency range of interest.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_solid_body_comp_x_dir.png}
\caption{\label{fig:modal_solid_body_comp_x_dir}Comparaison of measured frequency response function for in the X directions for accelerometers aligned along X. Amplitude is in \(\frac{m/s^2}{N}\). Accelerometer number is shown in the legend.}
\end{figure}
\section{From accelerometer DOFs to solid body DOFs}
\label{ssec:modal_acc_to_solid_dof}
Let's consider the schematic shown in Figure \ref{fig:modal_local_to_global_coordinates} where the motion of a solid body is measured at 4 distinct locations (in \(x\), \(y\) and \(z\) directions).
The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 DoFs of the solid body expressed in the frame \(\{O\}\).
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_local_to_global_coordinates.png}
\caption{\label{fig:modal_local_to_global_coordinates}Schematic of the measured motions of a solid body}
\end{figure}
Writing Eq. \eqref{eq:modal_p1_p2_motion} for the four displacement sensors in a matrix form gives \eqref{eq:modal_cart_to_acc}.
Writing this in matrix form for the four points gives \eqref{eq:modal_cart_to_acc}.
\begin{equation}\label{eq:modal_cart_to_acc}
\left[\begin{array}{c}
\delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
\end{array}\right] =
\left[\begin{array}{ccc|ccc}
1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
0 & 1 & 0 & -p_{1z} & 0 & p_{1x} \\
@ -385,15 +345,13 @@ Writing Eq. \eqref{eq:modal_p1_p2_motion} for the four displacement sensors in a
0 & 0 & 1 & p_{4y} & -p_{4x} & 0
\end{array}\right] \left[\begin{array}{c}
\delta p_x \\ \delta p_y \\ \delta p_z \\ \hline \delta\Omega_x \\ \delta\Omega_y \\ \delta\Omega_z
\end{array}\right] = \left[\begin{array}{c}
\delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
\end{array}\right]
\end{equation}
Supposing that the four sensors are properly located such that the system of equation \eqref{eq:modal_cart_to_acc} can be solved, the motion of the solid body expressed in a chosen frame \(\{O\}\) using the accelerometers attached to it can be determined using equation \eqref{eq:modal_determine_global_disp}.
Note that this inversion is equivalent to resolving a mean square problem.
Therefore, having more accelerometers permits to have a better approximation of the motion of the solid body.
Provided that the four sensors are properly located, the system of equation \eqref{eq:modal_cart_to_acc} can be solved by matrix inversion\footnote{As this matrix is in general non-square, the MoorePenrose inverse can be used instead.}.
The motion of the solid body expressed in a chosen frame \(\{O\}\) can be determined using equation \eqref{eq:modal_determine_global_disp}.
Note that this matrix inversion is equivalent to resolving a mean square problem.
Therefore, having more accelerometers permits better approximation of the motion of a solid body.
\begin{equation}
\left[\begin{array}{c}
@ -414,9 +372,10 @@ Therefore, having more accelerometers permits to have a better approximation of
From the CAD model, the position of the center of mass of each considered solid body is computed (see Table \ref{tab:modal_com_solid_bodies}).
Then, the position of each accelerometer with respect to the center of mass of the corresponding solid body can easily be derived.
The position of each accelerometer with respect to the center of mass of the corresponding solid body can easily be determined.
\begin{table}[htbp]
\caption{\label{tab:modal_com_solid_bodies}Center of mass of considered solid bodies with respect to the ``point of interest''}
\centering
\begin{tabularx}{0.6\linewidth}{lXXX}
\toprule
@ -430,14 +389,12 @@ Spindle & 0 & 0 & -580\\
Hexapod & -4 & 6 & -319\\
\bottomrule
\end{tabularx}
\caption{\label{tab:modal_com_solid_bodies}Center of mass of considered solid bodies with respect to the ``point of interest''}
\end{table}
Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\bm{H}_\text{CoM}\) \eqref{eq:modal_frf_matrix_com} expressing the response \(D_i\) (\(i\) from \(1\) to \(6\) for the \(6\) considered solid bodies) at the center of mass of each solid body can be computed from the initial FRF matrix \(\bm{H}\).
Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\mathbf{H}_\text{CoM}\) \eqref{eq:modal_frf_matrix_com} expressing the response at the center of mass of each solid body \(D_i\) (\(i\) from \(1\) to \(6\) for the \(6\) considered solid bodies) can be computed from the initial \acrshort{frf} matrix \(\mathbf{H}\).
\begin{equation}\label{eq:modal_frf_matrix_com}
\bm{H}_\text{CoM}(\omega_i) = \begin{bmatrix}
\mathbf{H}_\text{CoM}(\omega_i) = \begin{bmatrix}
\frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\
\frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\
\frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\
@ -453,145 +410,66 @@ Using \eqref{eq:modal_determine_global_disp}, the frequency response matrix \(\b
\section{Verification of solid body assumption}
\label{ssec:modal_solid_body_assumption}
From the response of one solid body along its 6 DoFs (from \(\bm{H}_{\text{CoM}}\)), and using \eqref{eq:modal_cart_to_acc}, it is possible to compute the response of the same solid body at any location, in particular at the location of the accelerometers fixed to this solid body.
From the response of one solid body expressed by its 6 \acrshortpl{dof} (i.e. from \(\mathbf{H}_{\text{CoM}}\)), and using equation \eqref{eq:modal_cart_to_acc}, it is possible to compute the response of the same solid body at any considered location.
In particular, the responses at the locations of the four accelerometers can be computed and compared with the original measurements \(\mathbf{H}\).
This is what is done here to check whether the solid body assumption is correct in the frequency band of interest.
Comparing the computed response of a particular accelerometer from \(\bm{H}_{\text{CoM}}\) with the original measurements \(\bm{H}\) is useful to check if the change of coordinate \eqref{eq:modal_determine_global_disp} works as expected, and if the solid body assumption is correct in the frequency band of interest.
The comparison is made for the 4 accelerometers fixed to the micro-hexapod in Figure \ref{fig:modal_comp_acc_solid_body_frf}.
The original frequency response functions and the ones computed from the CoM responses are well matching in the frequency range of interested.
Similar results are obtained for the other solid bodies, indicating that the solid body assumption is valid, and that a multi-body model can be used to represent the dynamics of the micro-station.
This also validates the reduction of the number of degrees of freedom from 69 (23 accelerometers with each 3DoF) to 36 (6 solid bodies with 6 DoF).
The comparison is made for the 4 accelerometers fixed on the micro-hexapod (Figure \ref{fig:modal_comp_acc_solid_body_frf}).
The original frequency response functions and those computed from the CoM responses match well in the frequency range of interest.
Similar results were obtained for the other solid bodies, indicating that the solid body assumption is valid and that a multi-body model can be used to represent the dynamics of the micro-station.
This also validates the reduction in the number of degrees of freedom from 69 (23 accelerometers with each 3 \acrshort{dof}) to 36 (6 solid bodies with 6 \acrshort{dof}).
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_comp_acc_solid_body_frf.png}
\caption{\label{fig:modal_comp_acc_solid_body_frf}Comparaison of the original accelerometer response (solid curves) and reconstructed response from the solid body response (dashed curves). For accelerometers 1 to 4 corresponding to the micro-hexapod.}
\caption{\label{fig:modal_comp_acc_solid_body_frf}Comparaison of the original accelerometer response (solid curves) and the reconstructed response from the solid body response (dashed curves). Accelerometers 1 to 4 corresponding to the micro-hexapod are shown.}
\end{figure}
\chapter{Modal Analysis}
\label{sec:modal_analysis}
The goal here is to extract the modal parameters describing the modes of station being studied, namely:
\begin{itemize}
\item the eigen frequencies and the modal damping (eigen values)
\item the mode shapes (eigen vectors)
\end{itemize}
This is done from the FRF matrix previously extracted from the measurements.
The goal here is to extract the modal parameters describing the modes of the micro station being studied, namely, the natural frequencies and the modal damping (i.e. the eigenvalues) as well as the mode shapes (.i.e. the eigenvectors).
This is performed from the \acrshort{frf} matrix previously extracted from the measurements.
In order to perform the modal parameter extraction, the order of the modal model has to be estimated (i.e. the number of modes in the frequency band of interest).
This is achived using the \acrfull{mif} in section \ref{ssec:modal_number_of_modes}.
In order to do the modal parameter extraction, we first have to estimate the order of the modal model we want to obtain.
This corresponds to how many modes are present in the frequency band of interest.
In section \ref{ssec:modal_number_of_modes}, we will use the Singular Value Decomposition and the Modal Indication Function to estimate the number of modes.
In section \ref{ssec:modal_parameter_extraction}, the modal parameter extraction is performed.
The graphical display of the mode shapes can be computed from the modal model, which is quite quite useful for physical interpretation of the modes.
The modal parameter extraction methods generally consists of \textbf{curve-fitting a theoretical expression for an individual FRF to the actual measured data}.
However, there are multiple level of complexity:
\begin{itemize}
\item works on a part of a single FRF curve
\item works on a complete curve encompassing several resonances
\item works on a set of many FRF plots all obtained from the same structure
\end{itemize}
The third method is the most complex but gives better results. This is the one we will use in section \ref{ssec:modal_parameter_extraction}.
From the modal model, it is possible to obtain a graphic display of the mode shapes (section \ref{ssec:modal_mode_shapes}).
In order to validate the quality of the modal model, we will synthesize the FRF matrix from the modal model and compare it with the FRF measured (section \ref{ssec:modal_model_validity}).
The modes of the structure are expected to be complex, however real modes are easier to work with when it comes to obtain a spatial model from the modal parameters.
\section{Determine the number of modes}
To validate the quality of the modal model, the full \acrshort{frf} matrix is computed from the modal model and compared to the initial measured \acrshort{frf} (section \ref{ssec:modal_model_validity}).
\section{Number of modes determination}
\label{ssec:modal_number_of_modes}
\paragraph{Singular Value Decomposition - Modal Indication Function}
The Mode Indicator Functions are usually used on \(n\times p\) FRF matrix where \(n\) is a relatively large number of measurement DOFs and \(p\) is the number of excitation DOFs, typically 3 or 4.
The \acrshort{mif} is here applied to the \(n\times p\) \acrshort{frf} matrix where \(n\) is a relatively large number of measurement DOFs (here \(n=69\)) and \(p\) is the number of excitation DOFs (here \(p=3\)).
In these methods, the frequency dependent FRF matrix is subjected to a singular value decomposition analysis which thus yields a small number (3 or 4) of singular values, these also being frequency dependent.
These methods are used to \textbf{determine the number of modes} present in a given frequency range, to \textbf{identify repeated natural frequencies} and to pre-process the FRF data prior to modal analysis.
From the documentation of the modal software:
\begin{quote}
The MIF consist of the singular values of the Frequency response function matrix. The number of MIFs equals the number of excitations.
By the powerful singular value decomposition, the real signal space is separated from the noise space. Therefore, the MIFs exhibit the modes effectively.
A peak in the MIFs plot usually indicate the existence of a structural mode, and two peaks at the same frequency point means the existence of two repeated modes.
Moreover, the magnitude of the MIFs implies the strength of the a mode.
\end{quote}
\begin{important}
The \textbf{Complex Mode Indicator Function} is defined simply by the SVD of the FRF (sub) matrix:
\begin{align*}
[H(\omega)]_{n\times p} &= [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H\\
[CMIF(\omega)]_{p\times p} &= [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p}
\end{align*}
\end{important}
We compute the Complex Mode Indicator Function.
The result is shown on Figure \ref{fig:modal_indication_function}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_indication_function.png}
\caption{\label{fig:modal_indication_function}Modal Indication Function}
\end{figure}
\paragraph{Composite Response Function}
An alternative is the Composite Response Function \(HH(\omega)\) defined as the sum of all the measured FRF:
\begin{equation}
HH(\omega) = \sum_j\sum_kH_{jk}(\omega)
The complex modal indication function is defined in equation \eqref{eq:modal_cmif} where the diagonal matrix \(\Sigma\) is obtained from a \acrlong{svd} of the \acrshort{frf} matrix as shown in equation \eqref{eq:modal_svd}.
\begin{equation} \label{eq:modal_cmif}
[CMIF(\omega)]_{p\times p} = [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p}
\end{equation}
Instead, we choose here to use the sum of the norms of the measured frf:
\begin{equation}
HH(\omega) = \sum_j\sum_k \left|H_{jk}(\omega) \right|
\begin{equation} \label{eq:modal_svd}
[H(\omega)]_{n\times p} = [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H
\end{equation}
The result is shown on figure \ref{fig:modal_composite_reponse_function}.
The \acrshort{mif} therefore yields to \(p\) values that are also frequency dependent.
A peak in the \acrshort{mif} plot indicates the presence of a mode.
Repeated modes can also be detected when multiple singular values have peaks at the same frequency.
The obtained \acrshort{mif} is shown on Figure \ref{fig:modal_indication_function}.
A total of 16 modes were found between 0 and \(200\,\text{Hz}\).
The obtained natural frequencies and associated modal damping are summarized in Table \ref{tab:modal_obtained_modes_freqs_damps}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_composite_reponse_function.png}
\caption{\label{fig:modal_composite_reponse_function}Composite Response Function}
\end{figure}
\section{Modal parameter extraction}
\label{ssec:modal_parameter_extraction}
\paragraph{OROS - Modal software}
Modal identification are done within the Modal software of OROS.
Several modal parameter extraction methods are available.
We choose to use the ``broad band'' method as it permits to identify the modal parameters using all the FRF curves at the same time.
It takes into account the fact the the properties of all the individual curves are related by being from the same structure: all FRF plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode.
Such method also have the advantage of producing a \textbf{unique and consistent model} as direct output.
In order to apply this method, we select the frequency range of interest and we give an estimate of how many modes are present.
Then, it shows a stabilization charts, such as the one shown on figure \ref{fig:modal_stabilization_chart}, where we have to manually select which modes to take into account in the modal model.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1,width=\linewidth]{img/modal_software/stabilisation_chart.jpg}
\caption{\label{fig:modal_stabilization_chart}Stabilization Chart}
\end{figure}
We can then run the modal analysis, and the software will identify the modal damping and mode shapes at the selected frequency modes.
\paragraph{Importation of the modal parameters on Matlab}
The obtained modal parameters are:
\begin{itemize}
\item Resonance frequencies in Hertz
\item Modal damping ratio in percentage
\item (complex) Modes shapes for each measured DoF
\item Modal A and modal B which are parameters important for further normalization
\end{itemize}
The obtained mode frequencies and damping are shown in Table \ref{tab:modal_obtained_modes_freqs_damps}.
\begin{table}[htbp]
\centering
\scriptsize
\begin{tabularx}{0.35\linewidth}{ccc}
\begin{minipage}[t]{0.70\linewidth}
\begin{center}
\includegraphics[scale=1,width=0.95\linewidth]{figs/modal_indication_function.png}
\captionof{figure}{\label{fig:modal_indication_function}Modal Indication Function}
\end{center}
\end{minipage}
\hfill
\begin{minipage}[b]{0.28\linewidth}
\begin{scriptsize}
\captionof{table}{\label{tab:modal_obtained_modes_freqs_damps}Natural frequencies and modal damping}
\begin{tabularx}{\linewidth}{ccc}
\toprule
Mode & Frequency [Hz] & Damping [\%]\\
Mode & Freq. [Hz] & Damp. [\%]\\
\midrule
1 & 11.9 & 12.2\\
2 & 18.6 & 11.7\\
@ -611,107 +489,47 @@ Mode & Frequency [Hz] & Damping [\%]\\
16 & 165.4 & 1.4\\
\bottomrule
\end{tabularx}
\caption{\label{tab:modal_obtained_modes_freqs_damps}Obtained eigen frequencies and modal damping}
\end{scriptsize}
\end{minipage}
\end{table}
\section{Modal parameter extraction}
\label{ssec:modal_parameter_extraction}
\paragraph{Theory}
It seems that the modal analysis software makes the \textbf{assumption} of viscous damping for the model with which it tries to fit the FRF measurements.
Generally, modal identification consists of curve-fitting a theoretical expression to the actual measured \acrshort{frf} data.
However, there are multiple levels of complexity, from fitting of a single resonance, to fitting a complete curve encompassing several resonances and working on a set of many \acrshort{frf} plots all obtained from the same structure.
If we note \(N\) the number of modes identified, then there are \(2N\) eigenvalues and eigenvectors given by the software:
\begin{align}
s_r &= \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}),\quad s_r^* \\
\{\psi_r\} &= \begin{Bmatrix} \psi_{1_x} & \psi_{2_x} & \dots & \psi_{23_x} & \psi_{1_y} & \dots & \psi_{1_z} & \dots & \psi_{23_z} \end{Bmatrix}^T, \quad \{\psi_r\}^*
\end{align}
for \(r = 1, \dots, N\) where \(\omega_r\) is the natural frequency and \(\xi_r\) is the critical damping ratio for that mode.
Here, the last method is used because it provides a unique and consistent model.
It takes into account the fact that the properties of all individual curves are related by being from the same structure: all \acrshort{frf} plots on a given structure should indicate the same values for the natural frequencies and damping factor of each mode.
\paragraph{Modal Matrices}
We would like to arrange the obtained modal parameters into two modal matrices:
\[ \Lambda = \begin{bmatrix}
s_1 & & 0 \\
& \ddots & \\
0 & & s_N
\end{bmatrix}_{N \times N}; \quad \Psi = \begin{bmatrix}
& & \\
\{\psi_1\} & \dots & \{\psi_N\} \\
& &
\end{bmatrix}_{M \times N} \]
\[ \{\psi_i\} = \begin{Bmatrix} \psi_{i, 1_x} & \psi_{i, 1_y} & \psi_{i, 1_z} & \psi_{i, 2_x} & \dots & \psi_{i, 23_z} \end{Bmatrix}^T \]
\(M\) is the number of DoF: here it is \(23 \times 3 = 69\).
\(N\) is the number of mode
Each eigen vector is normalized: \(\| \{\psi_i\} \|_2 = 1\)
However, the eigen values and eigen vectors appears as complex conjugates:
\[ s_r, s_r^*, \{\psi\}_r, \{\psi\}_r^*, \quad r = 1, N \]
In the end, they are \(2N\) eigen values.
We then build two extended eigen matrices as follow:
\[ \mathcal{S} = \begin{bmatrix}
s_1 & & & & & \\
& \ddots & & & 0 & \\
& & s_N & & & \\
& & & s_1^* & & \\
& 0 & & & \ddots & \\
& & & & & s_N^*
\end{bmatrix}_{2N \times 2N}; \quad \Phi = \begin{bmatrix}
& & & & &\\
\{\psi_1\} & \dots & \{\psi_N\} & \{\psi_1^*\} & \dots & \{\psi_N^*\} \\
& & & & &
\end{bmatrix}_{M \times 2N} \]
We also build the Modal A and Modal B matrices:
\begin{equation}
A = \begin{bmatrix}
a_1 & & 0 \\
& \ddots & \\
0 & & a_N
\end{bmatrix}_{N \times N}; \quad B = \begin{bmatrix}
b_1 & & 0 \\
& \ddots & \\
0 & & b_N
\end{bmatrix}_{N \times N}
\end{equation}
With \(a_i\) is the ``Modal A'' parameter linked to mode i.
``Modal A'' and ``modal B'' are linked through the following formula:
\[ B = - A \Lambda \]
\section{Obtained Mode Shapes animations}
\label{ssec:modal_mode_shapes}
From the modal parameters, it is possible to show the modal shapes with an animation.
Examples are shown in Figures \ref{fig:modal_mode_animations}.
From the obtained modal parameters, the mode shapes are computed and can be displayed in the form of animations (three mode shapes are shown in Figure \ref{fig:modal_mode_animations}).
\begin{figure}
\begin{subfigure}{\textwidth}
\begin{center}
\includegraphics[scale=1,width=\linewidth]{figs/modal_mode1_animation.jpg}
\end{center}
\subcaption{\label{fig:modal_mode1_animation}Mode 1}
\subcaption{\label{fig:modal_mode1_animation}$1^{st}$ mode at 11.9 Hz: tilt suspension mode of the granite}
\end{subfigure}
\begin{subfigure}{\textwidth}
\begin{center}
\includegraphics[scale=1,width=\linewidth]{figs/modal_mode6_animation.jpg}
\end{center}
\subcaption{\label{fig:modal_mode6_animation}Mode 6}
\subcaption{\label{fig:modal_mode6_animation}$6^{th}$ mode at 69.8 Hz: vertical resonance of the spindle}
\end{subfigure}
\begin{subfigure}{\textwidth}
\begin{center}
\includegraphics[scale=1,width=\linewidth]{figs/modal_mode13_animation.jpg}
\end{center}
\subcaption{\label{fig:modal_mode13_animation}Mode 13}
\subcaption{\label{fig:modal_mode13_animation}$13^{th}$ mode at 124.2 Hz: lateral micro-hexapod resonance}
\end{subfigure}
\caption{\label{fig:modal_mode_animations}Instrumentation used for the modal analysis}
\caption{\label{fig:modal_mode_animations}Three obtained mode shape animations}
\end{figure}
We can learn quite a lot from these mode shape animations.
For instance, the mode shape of the first mode at 11Hz (figure \ref{fig:modal_mode1_animation}) seems to indicate that this corresponds to a suspension mode.
This could be due to the 4 Airloc Levelers that are used for the granite (figure \ref{fig:modal_airloc}).
These animations are useful for visually obtaining a better understanding of the system's dynamic behavior.
For instance, the mode shape of the first mode at \(11\,\text{Hz}\) (figure \ref{fig:modal_mode1_animation}) indicates an issue with the lower granite.
It turns out that four \emph{Airloc Levelers} are used to level the lower granite (figure \ref{fig:modal_airloc}).
These are difficult to adjust and can lead to a situation in which the granite is only supported by two of them; therefore, it has a low frequency ``tilt mode''.
The levelers were then better adjusted.
\begin{figure}[htbp]
\centering
@ -719,91 +537,87 @@ This could be due to the 4 Airloc Levelers that are used for the granite (figure
\caption{\label{fig:modal_airloc}AirLoc used for the granite (2120-KSKC)}
\end{figure}
They are probably \textbf{not well leveled}, so the granite is supported only by two Airloc.
The modal parameter extraction is made using a proprietary software\footnote{NVGate software from OROS company.}.
For each mode \(r\) (from \(1\) to the number of considered modes \(m=16\)), it outputs the frequency \(\omega_r\), the damping ratio \(\xi_r\), the eigenvectors \(\{\phi_{r}\}\) (vector of complex numbers with a size equal to the number of measured \acrshort{dof} \(n=69\), see equation \eqref{eq:modal_eigenvector}) and a scaling factor \(a_r\).
\section{Verify the validity of the Modal Model}
\begin{equation}\label{eq:modal_eigenvector}
\{\phi_i\} = \begin{Bmatrix} \phi_{i, 1_x} & \phi_{i, 1_y} & \phi_{i, 1_z} & \phi_{i, 2_x} & \dots & \phi_{i, 23_z} \end{Bmatrix}^T
\end{equation}
The eigenvalues \(s_r\) and \(s_r^*\) can then be computed from equation \eqref{eq:modal_eigenvalues}.
\begin{equation}\label{eq:modal_eigenvalues}
s_r = \omega_r (-\xi_r + i \sqrt{1 - \xi_r^2}), \quad s_r^* = \omega_r (-\xi_r - i \sqrt{1 - \xi_r^2})
\end{equation}
\section{Verification of the modal model validity}
\label{ssec:modal_model_validity}
There are two main ways to verify the validity of the modal model
\begin{itemize}
\item Synthesize FRF measurements that has been used to generate the modal model and compare
\item Synthesize FRF that has not yet been measured. Then measure that FRF and compare
\end{itemize}
To check the validity of the modal model, the complete \(n \times n\) \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) is first synthesized from the modal parameters.
Then, the elements of this \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) that were already measured can be compared to the measured \acrshort{frf} matrix \(\mathbf{H}\).
From the modal model, we want to synthesize the Frequency Response Functions that has been used to build the modal model.
Let's recall that:
\begin{itemize}
\item \(M\) is the number of measured DOFs (\(3 \times n_\text{acc}\))
\item \(N\) is the number of modes identified
\end{itemize}
We then have that the FRF matrix \([H_{\text{syn}}]\) can be synthesize using the following formula:
\begin{important}
\begin{equation}
[H_{\text{syn}}(\omega)]_{M\times M} = [\Phi]_{M\times2N} \left[\frac{Q_r}{j\omega - s_r}\right]_{2N\times2N} [\Phi]_{2N\times M}^T
In order to synthesize the full \acrshort{frf} matrix, the eigenvectors \(\phi_r\) are first organized in matrix from as shown in equation \eqref{eq:modal_eigvector_matrix}.
\begin{equation}\label{eq:modal_eigvector_matrix}
\Phi = \begin{bmatrix}
& & & & &\\
\phi_1 & \dots & \phi_N & \phi_1^* & \dots & \phi_N^* \\
& & & & &
\end{bmatrix}_{n \times 2m}
\end{equation}
with \(Q_r = 1/M_{A_r}\)
\end{important}
An alternative formulation is:
\[ H_{pq}(s_i) = \sum_{r=1}^N \frac{A_{pqr}}{s_i - \lambda_r} + \frac{A_{pqr}^*}{s_i - \lambda_r^*} \]
with:
\begin{itemize}
\item \(A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{A_r}}\), \(M_{A_r}\) is called ``Modal A''
\item \(\psi_{pr}\): scaled modal coefficient for output DOF \(p\), mode \(r\)
\item \(\lambda_r\): complex modal frequency
\end{itemize}
The full \acrshort{frf} matrix \(\mathbf{H}_{\text{syn}}\) can be synthesize using \eqref{eq:modal_synthesized_frf}.
From the modal software documentation:
\begin{quote}
\textbf{Modal A}
Scaling constant for a complex mode. It has the same properties as modal mass for normal modes (undamped or proportionally damped cases). Assuming
\begin{itemize}
\item \(\psi_{pr}\) = Modal coefficient for measured degree of freedom p and mode r
\item \(\psi_{qr}\) = Modal coefficient for measured degree of freedom q and mode r
\item \(A_{pqr}\) = Residue for measured degree of freedom p, measured degree of q and mode r
\item \(M_{Ar}\) = Modal A of mode r
\end{itemize}
\begin{equation}\label{eq:modal_synthesized_frf}
[\mathbf{H}_{\text{syn}}(\omega)]_{n\times n} = [\Phi]_{n\times2m} [\mathbf{H}_{\text{mod}}(\omega)]_{2m\times2m} [\Phi]_{2m\times n}^T
\end{equation}
Then
\[ A_{pqr} = \frac{\psi_{pr}\psi_{qr}}{M_{Ar}} \]
With \(\mathbf{H}_{\text{mod}}(\omega)\) a diagonal matrix representing the response of the different modes \eqref{eq:modal_modal_resp}.
\begin{equation}\label{eq:modal_modal_resp}
\mathbf{H}_{\text{mod}}(\omega) = \text{diag}\left(\frac{1}{a_1 (j\omega - s_1)},\ \dots,\ \frac{1}{a_m (j\omega - s_m)}, \frac{1}{a_1^* (j\omega - s_1^*)},\ \dots,\ \frac{1}{a_m^* (j\omega - s_m^*)} \right)_{2m\times 2m}
\end{equation}
\textbf{Modal B}
Scaling constant for a complex mode. It has the same properties as modal stiffness for normal modes (undamped or proportionally damped cases). Assuming
\begin{itemize}
\item \(M_{Ar}\) = Modal A of mode r
\item \(\lambda_r\) = System pole of mode r
\end{itemize}
Then
\[ M_{Br} = - \lambda_r M_{Ar} \]
\end{quote}
The comparison between the original measured frequency response function and the synthesized one from the modal model is done in Figure \ref{fig:modal_comp_acc_frf_modal}.
The comparison between the original measured frequency response functions and those synthesized ones from the modal model is presented in Figure \ref{fig:modal_comp_acc_frf_modal}.
Whether the obtained match is good or bad is quite arbitrary.
However, the modal model seems to be able to represent the coupling between different nodes and different directions, which is quite important from a control perspective.
This can be seen in Figure \ref{fig:modal_comp_acc_frf_modal_3} that shows the frequency response function from the force applied on node 11 (i.e. on the translation stage) in the \(y\) direction to the measured acceleration at node \(2\) (i.e. at the top of the micro-hexapod) in the \(x\) direction.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_comp_acc_frf_modal.png}
\caption{\label{fig:modal_comp_acc_frf_modal}description}
\end{figure}
Frequency response functions that has not been measured can be synthesized as shown in Figure \ref{fig:modal_synthesized_frf}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/modal_synthesized_frf.png}
\caption{\label{fig:modal_synthesized_frf}description}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_1.png}
\end{center}
\subcaption{\label{fig:modal_comp_acc_frf_modal_1}From $F_{11,z}$ to $a_{11,z}$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_2.png}
\end{center}
\subcaption{\label{fig:modal_comp_acc_frf_modal_2}From $F_{11,z}$ to $a_{15,z}$}
\end{subfigure}
\begin{subfigure}{0.33\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.99\linewidth]{figs/modal_comp_acc_frf_modal_3.png}
\end{center}
\subcaption{\label{fig:modal_comp_acc_frf_modal_3}From $F_{11,y}$ to $a_{2,x}$}
\end{subfigure}
\caption{\label{fig:modal_comp_acc_frf_modal}Comparison of the measured FRF with the synthesized FRF from the modal model.}
\end{figure}
\chapter{Conclusion}
\label{sec:modal_conclusion}
Validation of solid body model.
In this study, a modal analysis of the micro-station was performed.
Thanks to an adequate choice of instrumentation and proper set of measurements, high quality frequency response functions can be obtained.
The obtained frequency response functions indicate that the dynamics of the micro-station are complex, which is expected from a heavy stack stage architecture.
It shows a lot of coupling between stages and different directions, and many modes.
Further step: go from modal model to parameters of the solid body model.
By measuring 12 degrees of freedom on each ``stage'', it could be verified that in the frequency range of interest, each stage behaved as a rigid body.
This confirms that a solid body model can be used to properly model the micro-station.
Although a lot of effort was put into this experimental modal analysis of the micro-station, it was difficult to obtain an accurate modal model.
However, the measurements are useful for tuning the parameters of the micro-station multi-body model.
\printbibliography[heading=bibintoc,title={Bibliography}]
\printglossaries
\end{document}

View File

@ -1,151 +1,16 @@
\usepackage{float}
\usepackage[ %
acronym, % Separate acronyms and glossary
toc, % appear in ToC
automake, % auto-use the makeglossaries command (requires shell-escape)
nonumberlist, % don't back reference pages
nogroupskip, % don't group by letter
nopostdot % don't add a dot at the end of each element
]{glossaries}
\usepackage{caption,tabularx,booktabs}
\usepackage{bm}
\usepackage[stylemods=longextra]{glossaries-extra}
\usepackage{xpatch} % Recommanded for biblatex
\usepackage[ % use biblatex for bibliography
backend=biber, % use biber backend (bibtex replacement) or bibtex
style=ieee, % bib style
hyperref=true, % activate hyperref support
backref=true, % activate backrefs
isbn=false, % don't show isbn tags
url=false, % don't show url tags
doi=false, % don't show doi tags
urldate=long, % display type for dates
maxnames=3, %
minnames=1, %
maxbibnames=5, %
minbibnames=3, %
maxcitenames=2, %
mincitenames=1 %
]{biblatex}
\setabbreviationstyle[acronym]{long-short}
\setglossarystyle{long-name-desc}
\setlength\bibitemsep{1.1\itemsep}
% \renewcommand*{\bibfont}{\footnotesize}
\usepackage{fontawesome}
\usepackage{caption}
\usepackage{subcaption}
\captionsetup[figure]{labelfont=bf}
\captionsetup[subfigure]{labelfont=bf}
\captionsetup[listing]{labelfont=bf}
\captionsetup[table]{labelfont=bf}
\usepackage{xcolor}
\definecolor{my-blue}{HTML}{6b7adb}
\definecolor{my-pale-blue}{HTML}{e6e9f9}
\definecolor{my-red}{HTML}{db6b6b}
\definecolor{my-pale-red}{HTML}{f9e6e6}
\definecolor{my-green}{HTML}{6bdbb6}
\definecolor{my-pale-green}{HTML}{e6f9f3}
\definecolor{my-yellow}{HTML}{dbd26b}
\definecolor{my-pale-yellow}{HTML}{f9f7e6}
\definecolor{my-orange}{HTML}{dba76b}
\definecolor{my-pale-orange}{HTML}{f9f0e6}
\definecolor{my-grey}{HTML}{a3a3a3}
\definecolor{my-pale-grey}{HTML}{f0f0f0}
\definecolor{my-turq}{HTML}{6bc7db}
\definecolor{my-pale-turq}{HTML}{e6f6f9}
\usepackage{inconsolata}
\usepackage[newfloat=true, chapter]{minted}
\usemintedstyle{autumn}
\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey}
\setminted[matlab]{label=Matlab}
\setminted[latex]{label=LaTeX}
\setminted[bash]{label=Bash}
\setminted[python]{label=Python}
\setminted[text]{label=Results}
\setminted[md]{label=Org Mode}
\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey}
\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}
\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also}
\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint}
\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition}
\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important}
\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1}
\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice}
\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question}
\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer}
\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary}
\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note}
\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution}
\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning}
\newtcolorbox{my-quote}[1]{%
colback=my-pale-grey,
grow to right by=-10mm,
grow to left by=-10mm,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}}
\newtcolorbox{my-verse}[1]{%
colback=my-pale-grey,
grow to right by=-10mm,
grow to left by=-10mm,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}}
\usepackage{environ}% http://ctan.org/pkg/environ
\NewEnviron{aside}{%
\marginpar{\BODY}
}
\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}}
\usepackage{soul}
\sethlcolor{my-pale-grey}
\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}}
\makeatletter
\preto\Gin@extensions{png,}
\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
\preto\Gin@extensions{gif,}
\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png}
\makeatother
\usepackage{hyperref}
\hypersetup{
colorlinks = true,
allcolors = my-blue
}
\usepackage{hypcap}
\usepackage[binary-units=true]{siunitx}
\sisetup{%
detect-all = true,
detect-family = true,
detect-mode = true,
detect-shape = true,
detect-weight = true,
detect-inline-weight = math,
}
\DeclareSIUnit\px{px}
\DeclareSIUnit\rms{rms}
\makeindex
\makeglossaries

134
preamble_extra.tex Normal file
View File

@ -0,0 +1,134 @@
\usepackage{float}
\usepackage{enumitem}
\usepackage{caption,tabularx,booktabs}
\usepackage{bm}
\usepackage{xpatch} % Recommanded for biblatex
\usepackage[ % use biblatex for bibliography
backend=biber, % use biber backend (bibtex replacement) or bibtex
style=ieee, % bib style
hyperref=true, % activate hyperref support
backref=true, % activate backrefs
isbn=false, % don't show isbn tags
url=false, % don't show url tags
doi=false, % don't show doi tags
urldate=long, % display type for dates
maxnames=3, %
minnames=1, %
maxbibnames=5, %
minbibnames=3, %
maxcitenames=2, %
mincitenames=1 %
]{biblatex}
\setlength\bibitemsep{1.1\itemsep}
\usepackage{caption}
\usepackage{subcaption}
\captionsetup[figure]{labelfont=bf}
\captionsetup[subfigure]{labelfont=bf}
\captionsetup[listing]{labelfont=bf}
\captionsetup[table]{labelfont=bf}
\usepackage{xcolor}
\definecolor{my-blue}{HTML}{6b7adb}
\definecolor{my-pale-blue}{HTML}{e6e9f9}
\definecolor{my-red}{HTML}{db6b6b}
\definecolor{my-pale-red}{HTML}{f9e6e6}
\definecolor{my-green}{HTML}{6bdbb6}
\definecolor{my-pale-green}{HTML}{e6f9f3}
\definecolor{my-yellow}{HTML}{dbd26b}
\definecolor{my-pale-yellow}{HTML}{f9f7e6}
\definecolor{my-orange}{HTML}{dba76b}
\definecolor{my-pale-orange}{HTML}{f9f0e6}
\definecolor{my-grey}{HTML}{a3a3a3}
\definecolor{my-pale-grey}{HTML}{f0f0f0}
\definecolor{my-turq}{HTML}{6bc7db}
\definecolor{my-pale-turq}{HTML}{e6f6f9}
\usepackage{inconsolata}
\usepackage[newfloat=true, chapter]{minted}
\usemintedstyle{autumn}
\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey}
\setminted[matlab]{label=Matlab}
\setminted[latex]{label=LaTeX}
\setminted[bash]{label=Bash}
\setminted[python]{label=Python}
\setminted[text]{label=Results}
\setminted[md]{label=Org Mode}
\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey}
\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}
\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also}
\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint}
\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition}
\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important}
\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1}
\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice}
\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question}
\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer}
\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary}
\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note}
\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution}
\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning}
\newtcolorbox{my-quote}[1]{%
colback=my-pale-grey,
grow to right by=-10mm,
grow to left by=-10mm,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}}
\newtcolorbox{my-verse}[1]{%
colback=my-pale-grey,
grow to right by=-10mm,
grow to left by=-10mm,
boxrule=0pt,
boxsep=0pt,
breakable,
enhanced jigsaw,
borderline west={4pt}{0pt}{my-grey}}
\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}}
\usepackage{environ}% http://ctan.org/pkg/environ
\NewEnviron{aside}{%
\marginpar{\BODY}
}
\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}}
\usepackage{soul}
\sethlcolor{my-pale-grey}
\let\OldTexttt\texttt
\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}}
\makeatletter
\preto\Gin@extensions{png,}
\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
\preto\Gin@extensions{gif,}
\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png}
\makeatother
\usepackage{hyperref}
\hypersetup{
colorlinks = true,
allcolors = my-blue
}
\usepackage{hypcap}

38
ref.bib
View File

@ -1,38 +0,0 @@
@article{wang11_extrac_real_modes_physic_matric,
author = {Tong Wang and Lingmi Zhang and Kong Fah Tee},
title = {Extraction of Real Modes and Physical Matrices From Modal
Testing},
journal = {Earthquake Engineering and Engineering Vibration},
volume = 10,
number = 2,
pages = {219-227},
year = 2011,
doi = {10.1007/s11803-011-0060-6},
url = {https://doi.org/10.1007/s11803-011-0060-6},
DATE_ADDED = {Tue Jul 9 15:51:21 2019},
}
@article{pastor12_modal_assur_criter,
author = {Miroslav Pastor and Michal Binda and Tom{\'a}{\v{s}} Har{\v{c}}arik},
title = {Modal Assurance Criterion},
journal = {Procedia Engineering},
volume = {48},
number = {nil},
pages = {543-548},
year = {2012},
doi = {10.1016/j.proeng.2012.09.551},
url = {https://doi.org/10.1016/j.proeng.2012.09.551},
DATE_ADDED = {Thu Jul 11 13:51:57 2019},
}
@book{ewins00_modal,
author = {Ewins, DJ},
title = {Modal testing: theory, practice and application},
year = {2000},
publisher = {Wiley-Blackwell},
journal = {Research studies Pre, 2nd ed., ISBN-13},
pages = {978--0863802188},
isbn = {0863802184},
address = {Baldock, Hertfordshire, England Philadelphia, PA},
keywords = {favorite, identification},
}