Contents   Functions      PDF Index |
Purpose
Property function for piezoelectric shells and utilities associated with piezoelectric models.
Syntax
mat= m_piezo('database name') pl = m_piezo('dbval MatId -elas 12 Name');
See section 2 for tutorial calls. Accepted commands are
[model,InputDOF(end+1,1)]=p_piezo('ElectrodeMPC Name',model,'z==5e-5'); defines the isopotential constraint as a case entry Name associated with FindNode command z==5e-5. An illustration is given in section 2.5.
Accepted command options are
model=p_piezo('ElectrodeSensQ 1682 Q-Base',model); adds a charge sensor (resultant) called Q-Base on node 1682. (See (97) for theory).
For shells, the node number is used to identify the p_piezo shell property and thus the associated elements. It is reminded that p_piezo entries must be duplicated when multiple patches are used. For volumes, the p_piezo ElectrodeMPC should be first defined, so that it can be used to obtain the electrode surface information.
Note that the command calls fe_case('SensMatch') so that changes done to material properties after this call will not be reflected in the observation matrix of this sensor.
To obtain sensor combinations (add charges of multiple sensors as done with specific wiring), specify a data structure with observation .cta at multiple .DOF as illustrated below.
For a voltage sensor, you can simply use a DOF sensor model=fe_case(model,'SensDof','V-Base',1682.21).
model=d_piezo('meshULBPlate cantilever'); % creates the model % If you don't remember the electrode node numbers p_piezo('ElectrodeDOF',model) % Combined charge r1=struct('cta',[1 1],'DOF',[1684;1685]+.21,'name','QS2+3'); model=p_piezo('ElectrodeSensQ',model,r1); sens=fe_case(model,'sens'); % Combined voltage r1=struct('cta',[1 1],'DOF',[1684;1685]+.21,'name','VS2+3'); model=fe_case(model,'SensDof',r1.name,r1); sens=fe_case(model,'sens');sens.lab
p_piezo('ElectrodeDof Bottom',model) returns the DOF the bottom electrode. With no name for selection p_piezo('ElectrodeDof',model) the command returns the list of electrode DOFs based on MPC defined using the ElectrodeMPC command or p_piezo shell entries. Use ElectrodeDof.* to get all DOFs.
p_piezo('electrodeview',cf) outlines the electrodes in the model and prints a clear text summary of electrode information. To only get the summary, pass a model model rather than a pointer cf to a feplot figure.
p_piezo('electrodeviewCharge',cf) builds a StressCut selection allowing the visualization of charge density. You should be aware that only resultant charges at nodes are known. For proper visualization a transformation from charge resultant to charge density is performed, this is known to have problem in certain cases so you are welcome to report difficulties.
Electrode2Case uses electrode information defined in the obsolete Electrode stack entry to generate appropriate case entries : V_In for enforced voltage actuators, V_Out for voltage measurements, Q_Out for charge sensors.
ElectrodeInit analyses the model to find electric master DOFs in piezo-electric shell properties or in MPC associated with volume models.
Tab commands are used to generate tabulated information about model contents. The calling format is p_piezo('TabDD',model). With no input argument, the current feplot figure is used. Currently generated tabs are
p_piezo('ViewDD',model) displays information about piezoelectric constitutive laws in the current model.
p_piezo('ViewElec ...',model) is used to visualize the electrical field. An example is given in section 2.6. Command options are DefLen val to specify the arrow length, EltSel val for the selection of elements to be viewed, Reset to force reinit of selection.
ViewStrain and ViewStress follow the same calling format.
Piezo shell elements with electrodes are declared by a combination of a mechanical definition as a layered composite, see p_shell 2, and an electrode definition with element property rows of the form
[ProId Type MecaProId ElNodeId1 LayerId1 UNU1 ElNodeId2...]
The constitutive law for a piezoelectric shell are detailed in section 1.3.2. The following gives a sample declaration.
model=femesh('testquad4'); % Shell MatId 100 ProdId 110 % MatId 1 : steel, MatId 12 : PZT elastic prop model.pl=m_elastic('dbval 1 Steel'); % Sample ULB piezo material, sdtweb m_piezo('sample_ULB') model.pl=m_piezo(model.pl,'dbval 3 -elas 12 Sample_ULB'); % ProId 111 : 3 layer composite (mechanical properties) model.il=p_shell(model.il,['dbval 111 laminate ' ... '3 1e-3 0 ' ... % MatID 3 (PZT), 1 mm piezo, 0 '1 2e-3 0 ' ... % MatID 1 (Steel), 2 mm '3 1e-3 0']); % MatID 3 (PZT), 1 mm piezo, 0 % ProId 110 : 3 layer piezo shell with electrodes on nodes 1682 and 1683 model.il=p_piezo(model.il,'dbval 110 shell 111 1682 1 0 1683 3 0'); p_piezo('viewdd',model) % Details about the constitutive law p_piezo('ElectrodeInfo',model) % Details about the layers