Add flexible mirror. And dimension of mirror

This commit is contained in:
Thomas Dehaeze 2020-04-14 11:30:25 +02:00
parent e1cde2bd5b
commit 3665313d14
10 changed files with 69 additions and 21 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1076,9 +1076,11 @@ The output =mirror_center= corresponds to the center of the Sphere and is the po
:END: :END:
#+begin_src matlab #+begin_src matlab
arguments arguments
args.type char {mustBeMember(args.type,{'none', 'rigid'})} = 'rigid' args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'rigid'
args.shape char {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical' args.shape char {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical'
args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg] args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg]
args.mass (1,1) double {mustBeNumeric, mustBePositive} = 10 % [kg]
args.freq (6,1) double {mustBeNumeric, mustBeNonnegative} = 200*ones(6,1) % [Hz]
end end
#+end_src #+end_src
@ -1101,10 +1103,43 @@ First, we initialize the =mirror= structure.
mirror.type = 0; mirror.type = 0;
case 'rigid' case 'rigid'
mirror.type = 1; mirror.type = 1;
case 'flexible'
mirror.type = 2;
end end
#+end_src #+end_src
** Material and Geometry ** Mass and Inertia
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_src matlab
mirror.mass = args.mass;
mirror.freq = args.freq;
#+end_src
** Stiffness and Damping properties
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_src matlab
mirror.K = zeros(6,1);
mirror.K(1:3) = mirror.mass * (2*pi*mirror.freq(1:3)).^2;
mirror.C = zeros(6,1);
mirror.C(1:3) = 0.2 * sqrt(mirror.K(1:3).*mirror.mass);
#+end_src
** Equilibrium position of the each joint.
:PROPERTIES:
:UNNUMBERED: t
:END:
#+begin_src matlab
mirror.Deq = zeros(6,1);
#+end_src
** Geometry
:PROPERTIES: :PROPERTIES:
:UNNUMBERED: t :UNNUMBERED: t
:END: :END:
@ -1115,7 +1150,7 @@ We define the geometrical values.
mirror.thickness = 0.025; % Thickness of the plate supporting the sample [m] mirror.thickness = 0.025; % Thickness of the plate supporting the sample [m]
mirror.hole_rad = 0.120; % radius of the hole in the mirror [m] mirror.hole_rad = 0.125; % radius of the hole in the mirror [m]
mirror.support_rad = 0.1; % radius of the support plate [m] mirror.support_rad = 0.1; % radius of the support plate [m]
@ -1125,15 +1160,13 @@ We define the geometrical values.
mirror.jacobian = 0.20; mirror.jacobian = 0.20;
case 'rigid' case 'rigid'
mirror.jacobian = 0.20 - mirror.h; mirror.jacobian = 0.20 - mirror.h;
case 'flexible'
mirror.jacobian = 0.20 - mirror.h;
end end
mirror.rad = 0.180; % radius of the mirror (at the bottom surface) [m] mirror.rad = 0.180; % radius of the mirror (at the bottom surface) [m]
#+end_src #+end_src
#+begin_src matlab
mirror.density = 2400; % Density of the material [kg/m3]
#+end_src
#+begin_src matlab #+begin_src matlab
mirror.cone_length = mirror.rad*tand(args.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point mirror.cone_length = mirror.rad*tand(args.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point
#+end_src #+end_src
@ -1142,7 +1175,7 @@ Now we define the Shape of the mirror.
We first start with the internal part. We first start with the internal part.
#+begin_src matlab #+begin_src matlab
mirror.shape = [... mirror.shape = [...
0 mirror.h-mirror.thickness mirror.support_rad+5e-3 mirror.h-mirror.thickness
mirror.hole_rad mirror.h-mirror.thickness; ... mirror.hole_rad mirror.h-mirror.thickness; ...
mirror.hole_rad 0; ... mirror.hole_rad 0; ...
mirror.rad 0 ... mirror.rad 0 ...
@ -1166,7 +1199,7 @@ Then, we define the reflective used part of the mirror.
Finally, we close the shape. Finally, we close the shape.
#+begin_src matlab #+begin_src matlab
mirror.shape = [mirror.shape; 0 mirror.h]; mirror.shape = [mirror.shape; mirror.support_rad+5e-3 mirror.h];
#+end_src #+end_src
** Save the Structure ** Save the Structure
@ -1234,7 +1267,7 @@ The =mirror= structure is saved.
args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3 args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3
args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 1 args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 1
args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3 args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3
args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 100e-3 args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 120e-3
% initializeCylindricalStruts % initializeCylindricalStruts
args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1 args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3 args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3

View File

@ -1,9 +1,11 @@
function [] = initializeMirror(args) function [] = initializeMirror(args)
arguments arguments
args.type char {mustBeMember(args.type,{'none', 'rigid'})} = 'rigid' args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'rigid'
args.shape char {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical' args.shape char {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical'
args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg] args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg]
args.mass (1,1) double {mustBeNumeric, mustBePositive} = 10 % [kg]
args.freq (6,1) double {mustBeNumeric, mustBeNonnegative} = 200*ones(6,1) % [Hz]
end end
mirror = struct(); mirror = struct();
@ -13,13 +15,26 @@ switch args.type
mirror.type = 0; mirror.type = 0;
case 'rigid' case 'rigid'
mirror.type = 1; mirror.type = 1;
case 'flexible'
mirror.type = 2;
end end
mirror.mass = args.mass;
mirror.freq = args.freq;
mirror.K = zeros(6,1);
mirror.K(1:3) = mirror.mass * (2*pi*mirror.freq(1:3)).^2;
mirror.C = zeros(6,1);
mirror.C(1:3) = 0.2 * sqrt(mirror.K(1:3).*mirror.mass);
mirror.Deq = zeros(6,1);
mirror.h = 0.05; % Height of the mirror [m] mirror.h = 0.05; % Height of the mirror [m]
mirror.thickness = 0.025; % Thickness of the plate supporting the sample [m] mirror.thickness = 0.025; % Thickness of the plate supporting the sample [m]
mirror.hole_rad = 0.120; % radius of the hole in the mirror [m] mirror.hole_rad = 0.125; % radius of the hole in the mirror [m]
mirror.support_rad = 0.1; % radius of the support plate [m] mirror.support_rad = 0.1; % radius of the support plate [m]
@ -29,16 +44,16 @@ switch args.type
mirror.jacobian = 0.20; mirror.jacobian = 0.20;
case 'rigid' case 'rigid'
mirror.jacobian = 0.20 - mirror.h; mirror.jacobian = 0.20 - mirror.h;
case 'flexible'
mirror.jacobian = 0.20 - mirror.h;
end end
mirror.rad = 0.180; % radius of the mirror (at the bottom surface) [m] mirror.rad = 0.180; % radius of the mirror (at the bottom surface) [m]
mirror.density = 2400; % Density of the material [kg/m3]
mirror.cone_length = mirror.rad*tand(args.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point mirror.cone_length = mirror.rad*tand(args.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point
mirror.shape = [... mirror.shape = [...
0 mirror.h-mirror.thickness mirror.support_rad+5e-3 mirror.h-mirror.thickness
mirror.hole_rad mirror.h-mirror.thickness; ... mirror.hole_rad mirror.h-mirror.thickness; ...
mirror.hole_rad 0; ... mirror.hole_rad 0; ...
mirror.rad 0 ... mirror.rad 0 ...
@ -56,6 +71,6 @@ else
error('Shape should be either conical or spherical'); error('Shape should be either conical or spherical');
end end
mirror.shape = [mirror.shape; 0 mirror.h]; mirror.shape = [mirror.shape; mirror.support_rad+5e-3 mirror.h];
save('./mat/stages.mat', 'mirror', '-append'); save('./mat/stages.mat', 'mirror', '-append');

View File

@ -22,7 +22,7 @@ arguments
args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3 args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3
args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 1 args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 1
args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3 args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3
args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 100e-3 args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 120e-3
% initializeCylindricalStruts % initializeCylindricalStruts
args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1 args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3 args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3