SDT-piezo         Contents     Functions         Previous Next     PDF Index

4.4  Other types of actuators

Other types of loads, such as surface or volumic loads are handled by the fe_load command (sdtweb('fe_load') for more details) in SDT. The case of imposed displacement is handled with fe_case('DofSet') calls. The following script illustrates the use of volume and surface loads on the U-beam.
In d_piezo('TutoPzBeamSurfVol-s1') , the first load is defined by 'data' and is a constant volumic load in the y-direction. The second load, defined by 'data2' is in the z-direction and its magnitude depends both on the x and z position in the U-beam (f(x,z)=x*(z−1)3). The two loads are represented in Figures 4.12 and 4.13 using arrows and color codes (for the variable force only).


Figure 4.12: Constant volumic force applied in the y-direction


Figure 4.13: Variable volumic force applied in the z-direction represented by arrows (left) and color code proportionnal to amplitude in z-direction (right)

%% Step 1 Apply  a volumic load and represent
model = femesh('testubeam');
data=struct('sel','groupall','dir',[0 32 0]);
data2=struct('sel','groupall','dir',{{0,0,'(z-1).^3.*x'}});
model=fe_case(model,'FVol','Constant',data, ...
                     'FVol','Variable',data2);

% Visualize loads
cf=feplot(model); iimouse('resetview');

% Make mesh transparent :
fecom('showfialpha') %

% Visualize Load
fecom proviewon

% Improve figure
sdth.urn('Tab(Cases,Constant){deflen,.5,arProp,"linewidth,2"}',cf)
fecom curtabcases 'Constant' % Shows the case 'Constant'

In d_piezo('TutoPzBeamSurfVol-s2') , the surface load is defined using selectors to define the area of the surface where the load is applied. In this case, the load is on the surface corresponding to x=−0.5 and z>1.25. The resulting surface load is represented in Figure 4.14.

%% Step 2 :  Apply a surface load case in a model using selectors
data=struct('sel','x==-.5', ...
             'eltsel','withnode {z>1.25}','def',1,'DOF',.19);
model=fe_case(model,'Fsurf','Surface load',data); cf=feplot(model);

Figure 4.14: Surface load applied on a specific surface of the U-beam

In d_piezo('TutoPzBeamSurfVol-s3') , the same is done using node lists.

%% Step 3 : Applying a surfacing load case in a model using node lists
data=struct('eltsel','withnode {z>1.25}','def',1,'DOF',.19);
NodeList=feutil('findnode x==-.5',model);
data.sel={'','NodeId','==',NodeList};
model=fe_case(model,'Fsurf','Surface load 2',data); cf=feplot(model);

And lastly in d_piezo('TutoPzBeamSurfVol-s4') , the use of sets to define surface loads (Figure 4.15) is illustrated.


Figure 4.15: Surface load applied on a specific surface of the U-beam

%% Step 4 : Applying a surfacing load case in a model using sets

% Define a face set
[eltid,model.Elt]=feutil('eltidfix;',model);
i1=feutil('findelt withnode {x==-.5 & y<0}',model);i1=eltid(i1);
i1(:,2)=2; % fourth face is loaded
data=struct('ID',1,'data',i1,'type','FaceId');
model=stack_set(model,'set','Face 1',data);

% define a load on face 1
data=struct('set','Face 1','def',1,'DOF',.19);
model=fe_case(model,'Fsurf','Surface load 3',data); cf=feplot(model);

Another type of load is the case when degrees of freedom are imposed (imposed displacement, velocity, acceleration, or electric potential in the case of piezoelectric actuators). The script below illustrates the case where the U-beam has an imposed displacement on the cantilever side, in the y-direction (Figure 4.16).
In d_piezo('TutoPzBeamUimp-s1') , the mesh is created and the boundary conditions are applied. One has to be careful not to block the degrees of freedom in the direction of the imposed motion (y in this example):

%% Step 1 Meshing and BC
model = femesh('test ubeam');
% BC : Impose displacement -  Fix all other dofs for Base
model=fe_case(model,'FixDof','Clamping','z==0 -DOF 1 3');

In d_piezo('TutoPzBeamUimp-s2') , the displacement at the base is imposed using a 'DofSet' entry.

%% Step 2 Apply base displacement in y-direction
% find node z==0
nd=feutil('find node z==0',model); 
data.DOF=nd+.02; data.def=ones(length(nd),1);
model=fe_case(model,'DofSet','Uimp',data);

Then in In d_piezo('TutoPzBeamUimp-s3') , a point sensor is introduced on node 104 in direction y (Figure 4.16).


Figure 4.16: Imposed displacement of the base of the U-beam in the y-direction, and sensor at node 104 in the y-direction

Finally in (d_piezo('TutoPzBeamUimp-s4') ), the transfer function is computed using fe_simul and plotted in the iiplot environment (Figure 4.17).


Figure 4.17: Transfer function for an imposed displacement of the base of the U-beam in the y-direction, and a displacement at node 104 in the y-direction

As expected, the static response is unitary, as the U-beam does not deform when a uniform unitary displacement of the base is imposed, so that node 104 moves in the same direction and with the same magnitude as the base.
Note that it is also possible to impose an acceleration when building state-space models, which will be detailed in section 6.3.


©1991-2025 by SDTools
Previous Up Next