# Transient-Strucutral 2D - Apply Sine Voltage on a Piezoceramik

Hello, everyone,

I simulate a piezo transducer with the "Piezo and MEMES" toolbox in Workbench. I want to investigate the transient response of the transducer with a 2D Transient Strucural Analysis. For this purpose I have to apply a sine wave voltage at a certain frequency to the ceramics. My first attempt was the following one using an APDL code:

*dim,tabvolt,table,21,,time

tabvolt(1) = 0,5.877,9.5,9.5,5.877,0,-5.877,-9.5,-9.5,-5.877,0,5.877,9.5,9.5,5.877,0,-5.877,-9.5,-9.5,-5.877,0 ! VOLTAGE

tabvolt(1,0) = 0.01,0.012,0.014,0.016,0.018,0.020,0.022,0.024,0.026,0.028,0.03,0.032,0.032,0.034,0.036,0.038,0.04,0.042,0.044,0.046,0.048,0.05 ! TIME

! Apply time varying voltage

d,sig,volt,%tabvolt%

d,GND,volt,0

Only the voltage is kept constant at -9.5V from t=0.04s6 until the end of the simulation.

I still apply a normal force and have specified a beta-damping.

My hoped-for goal is to have a loop which can ideally be operated by parameters such as number of oscillations, operating frequency, voltage amplitude, sampling of the sine (in the example above, the sine is applied over 10 points) and an offset for applying the normal force (approx. 0.01s, then the sine can be applied).

From the structure of the transients I would say it would be good to apply the normal force in the first step and to have a new step for each harmonic or fundamental.

I would like to control the simulation with Matlab and define the variables there.

For the beginning it would be very good, if I can bring for example a sine wave 5 periods on the ceramics at the frequency of 65000Hz with 10 points per sine wave and an amplitude of 10V. Currently it only works at 1.5 periods and a frequency of 50Hz.

I hope I have described my problem sufficiently for now.

Many thanks in advance!

## Comments

Hello,

If you create a command object containing the following APDL code you can specify the amplitude, frequency, number of points per cycle, and total duration (measured in number of cycles) in the ARG1, ARG2, ARG3, and ARG4 fields of Details respectively. The code creates a table array named "harmtrns". You can then add whatever line you like to apply the harmonically varying using tabular loading, e.g.,

d,sig,volt,%harmtrns%

C*** MACRO harmtrns.mac PRODUCES

C*** SINE WAVE LOAD FOR TRANSIENT

C*** ANALYSES

C*** BILL BULAT 05/31/2005

C*** MODIFIED 09/12/2012

C*************************************************************************

C*** INPUT PARAMETERS (EDIT TO SUIT)

C*************************************************************************

ampltd=arg1 ! AMPLITUDE OF LOAD

frq=arg2 ! OPERATING FREQUENCY (HZ)

npts_cy=arg3 ! # OF PTS/CYCLE

ncy=arg4 ! # OF CYCLES (DURATION OF TRANSIENT)

C*************************************************************************

C*** DERIVED PARAMETERS

C*************************************************************************

npts=npts_cy*ncy ! TOTAL # OF PTS

dt=(1/frq)/npts_cy ! TIME STEP SIZE

P=1/frq ! PERIOD (s)

*afun,rad

pi=acos(-1)

C*************************************************************************

C*** DIMENSION ARRAY

C*************************************************************************

*del,harmtrns

*dim,harmtrns,table,npts+1,,,time

C*************************************************************************

C*** FILL ARRAY

C*************************************************************************

*do,i,1,npts+1 ! FILL THE DATA COLUMN (ALWAYS DO THIS FIRST)

tm=(i-1)*dt

harmtrns(i,1)=ampltd*sin((2*pi/P)*tm)

*enddo

*do,i,1,npts+1 ! FILL THE TIME VALUE COLUMN (COLUMN "0")

tm=(i-1)*dt

harmtrns(i,0)=tm

*enddo

*vplo,harmtrns(1,0),harmtrns(1,1)