SDT-piezo         Contents     Functions         Previous Next     PDF Index

5.1  Manual meshing

We consider again the example treated in section 4.6.2, represented in Figure 4.19. The material properties of the aluminum plate and the piezoceramic patches are given in Table 4.1. The thickness of the plate is 1.2 mm, and the piezoelectric material corresponds to the SONOX_P502_iso material in m_piezo Database.
In the first step d_piezo('TutoPzMeshingBasics-s1') , the mesh is built with simple SDT tools:

% See full example in d_piezo('ScriptTutoPzMeshingBasics')
d_piezo('DefineStyles');

%% Step 1 - Mesh the plate
 model=struct('Node',[1 0 0 0 0 0 0],'Elt',[]);
 model=feutil('addelt',model,'mass1',1);
 % Note that the extrusion values are chosen to include the patch edges
 dx=[linspace(0,15,3) linspace(15,15+55,10) linspace(15+55,463-5,50) 463];
 model=feutil('extrude 0 1 0 0',model,.001*unique(dx));
 dy=[linspace(0,12,3) linspace(12,12+25,5) linspace(12+25,63,5) ...
    linspace(63,63+25,5) linspace(63+25,100,3)];
 model=feutil('extrude 0 0 1 0',model,.001*unique(dy));

Note that the meshing is such that the patch edges corresponds to limits of elements in the mesh. It is then possible to divided the mesh in different groups, related to the two areas where the patches are added, and the host structure with no piezoelectric properties. Then a different ProID is set for the regions with piezoelectric patches.
This is done on the second step d_piezo('TutoPzMeshingBasics-s2')

 %% Step 2 - Set patch areas and set different properties
 model.Elt=feutil('divide group 1 withnode{x>.015 & x<.07 & y>.013 & y<.037 }',model);
 model.Elt=feutil('divide group 2 withnode{x>.015 & x<.07 & y>.064 & y<.088 }',model);
 model.Elt=feutil('set group 1 proId3',model);
 model.Elt=feutil('set group 2 proId4',model);

Visualizing the mesh and using fe_com('colordatapro') (see Figure 5.1) allows to check that different properties have been assigned to the two regions where piezoelectric patches need to be added.


Figure 5.1: Mesh of the composite plate. The different colours represent the different groups

The next step d_piezo('TutoPzMeshingBasics-s3') is to define the material properties for the host structure and the patches. Here, Sonox_P502_iso is used:

%% Step 3 - Material Properties
model.pl=m_elastic('dbval 1 Aluminum');
model.pl=m_piezo(model.pl,'dbval 3 -elas2 SONOX_P502_iso');
% To avoid warning due to the use of simplified piezo properties.
model=p_piezo('DToSimple',model);

Piezoelectric material properties are divided in two parts. The first one (ProId 3 here) contains the piezoelectric data, and is linked to elastic properties with ProID 2 in this example through the -elas2 command. If the piezoelectric properties do not exist in the database, it is always possible to introduce them by hand with the following commands:

  model.pl=m_elastic('dbval 1 Aluminum');
  d=zeros(1,18); d([11 13])=560e-12; d([3 6])=-185e-12; d(9)=440e-12;
  eps=zeros(1,9); eps([1 5 9])= 8.854e-12*1850;
%                                      elasid |dij coeff  | dielectric coeffs
  model.pl=[ model.pl zeros(1,24);
            3 fe_mat('m_piezo','SI',2) 2        d           eps;
            2 fe_mat('m_elastic','SI',1) 54e9 0.41 7740 zeros(1,25)];

The piezoelectric and dielectric coefficients are stored in a vector of 18 (3x6 matrix) and 9 (3x3 matrix) values respectively. For more information see m_piezo 2:General 3D piezo.
In d_piezo('TutoPzMeshingBasics-s4') , now that the material properties have been defined, it is necessary to create laminates with three layers, the top and bottom layers being made of the piezoelectric material (ProID 3), of thickness 0.25 mm and the middle layer being the host structure made of aluminum with thickness 1.2 mm.

%% Step 4 - Laminate properties and piezo electrodes
model.il=p_shell('dbval 1 laminate 1 1.2e-3 0', ...
  'dbval 2 laminate 3 2.5e-4 0 1 1.2e-3 0 3 2.5e-4 0');

It is also necessary to assign electrodes to each patch, and an electrical DOF id. This single DOF represents the difference of voltage between the top and bottom electrode and is the same for all elements in the piezoelectric patch, as the electrodes impose equipotentiality. Here for example, DOF 1682.21 is assigned to the first layer of group 1, and DOF 1683.21 to the third layer of the same group.

%%% Piezo electrodes
%%%                                         NdNb LayerID   NdNb  LayerID
model.il=p_piezo(model.il,'dbval 3 shell 2 1682    1   0    1683  3 0');
model.il=p_piezo(model.il,'dbval 4 shell 2 1684    1   0    1685  3 0');

We can now check that the patches are implemented properly by computing the static response to an applied voltage to the patch in group 1 (bottom). The layers are numbered from bottom to top, so it corresponds to DOF 1682.21. Note that in order to find the top and bottom of an element for more complex (curved) meshes, it is possible to use the following command to show the orientation of the normal of the elements (Figure 5.2):


Figure 5.2: Mesh of the plate with arrows showing the orientation of the normals to the elements

cf=feplot(model); fecom('showmap'); fecom('view3');
% scale properly
fecom('scalecoeff 1e-10'); fecom('showmap')

The electrical DOF corresponds to the difference of electrical potential between the top and bottom electrodes, so if one applies a difference of potential of 1V, it results in a negative electric field which is in the opposite direction of the poling direction (always in the positive z (normal) direction for a plate element). Because the d31 and d32 are negative coefficient, the resulting strain is positive (negative electric field multiplied by negative constant). A positive strain at the bottom of the plate should result in an upward motion of the tip of the beam, which is verified in d_piezo('TutoPzMeshingBasics-s5') (Figure 5.3).
The tip-displacement is:

d =  2.5244e-06

The script above also defines three charge sensors on DOFs 1683.21, 1684.21 and 1685.21. If the electrodes are not short-circuited, it would result in a zero-charge measured, so the electrical DOFs are set to zero for these three patches so that a resultant charge can be measured.


Figure 5.3: Static response to a unit voltage application on one of the bottom piezoelectric patches

To implement a piezoelectric patch on a single side of the plate, it is important to treat properly the offset, as the layer sequence is not symmetric with respect to the neutral plane of the plate. This is done by using the z0 parameter when defining the laminates. z0 corresponds to the distance from the mid-plane to the bottom of the plate (see sdtweb('p_shell')). It is illustrated in the last step d_piezo('TutoPzMeshingBasics-s6') which is the same as the previous one but with piezoelectric patches only on the bottom of the plate, in which case the offset should be z0=−0.6 mm − 0.25 mm = −0.85 mm where 0.6mm is half the thickness of the support plate and 0.25mm is the thickness of the piezo.

%%  Laminate properties and piezo electrodes
% This is where an offset must be specified
%(else z0=-7.25e-4 (half of total thickness which is not correct).
model.il=p_shell('dbval 1 laminate 1 1.2e-3 0', ...
   'dbval 2 laminate z0=-8.5e-4 3 2.5e-4 0 1 1.2e-3 0 ');

The difference of static response is:

d =  2.5244e-06
d2 = 3.1700e-06
difference of static response 25.5743%

The results show that the plate with only one piezoelectric element on the bottom is less stiff then the case with piezos on both the top and bottom: the tip displacement is 25% higher (3.17 µ m/V vs 2.52 µ m /V) .
When the piezoelectric element is at the top of the plate, then the offset should be equal to the thickness of the main plate divided by two (negative value).


©1991-2025 by SDTools
Previous Up Next