# Outputting Simulation Results Answered

Hi,

I'm new to the analyst workspace, and I was going through this pzt disk tutorial. First of all, the images there weren't visible (the files were moved?), so I couldn't see any screenshots they may have posted there. I copy-pasted all the code from the tutorial and ran the simulation (after removing some 'term' functions that were stopping it from completing). However, none of the simulation results I downloaded were readable by the post-processor. What am I doing wrong?

Thanks

Here's the script in case you wanted to see it:

c

c designer: onscale

c model description: pzt 2d axisymmetric disc

c date: 7/9/2020

c version: 1.0

c

c set model title

titl training pzt 2d disc example

c use all cores

mp omp * *

c do not save restart file

rest no

c geometry

symb water_size = 4e-3/* dimension of water around transducer

symb pzt_rad = 10e-3 /* pzt radius

symb pzt_thk = 2e-3/* pzt thickness

c frequency and mesh

symb freqint = 1e6 /* frequency of interest

symb freqdamp = $freqint /* set damping frequency to frequency of interest

symb vel = 1500 /* minimum material velocity in model

symb wavelength = $vel / $freqint /* calculate smallest wavelength to disctretise

symb nepw = 15 /* number of elements per wavelength

symb box = $wavelength / $nepw /* calculate element size for meshing

c create x-y-z keypoints to accurately model dimensions

symb #keycord x 1 0.0 $pzt_rad $water_size

symb #get { idx } rootmax x /* store last keypoint indice in variable 'idx'

symb #keycord y 1 0.0 $water_size $pzt_thk $water_size

symb #get { jdx } rootmax y /* store last keypoint indice in variable 'jdx'

c create i-j-k keypoints

symb #keyindx i 1 $idx 1 $box 1 /* calculate number of nodes required in i direction

symb #keyindx j 1 $jdx 1 $box 1 /* calculate number of nodes required in j direction

symb indgrd = $i$idx /* last node number in i direction

symb jndgrd = $j$jdx /* last node number in j direction

c create grid

grid $indgrd $jndgrd axiy /* generate grid of nodes and apply axisymmetric condition to model grid

c map physical geometry to grid of nodes

geom keypnt $idx $jdx /* tie in all xy keypoints (physical dimensions) to ij keypoints(nodes)

c material defintions

symb #read training.prjmat /* materials stored in .prjmat file and read into flex model

c allocate materials to grid

site

regn watr /* assign watr to full grid

regn pmt3 $i1 $i2 $j2 $j3 /* assign material 'pmt3' to grid defined by nodal range end

c plot model

grph

nvew 2 2 /* set up 2 views

plot matr /* plot model

mirr x on /* apply visual symmetry

plot matr /* replot model

end

c boundary conditions & loading

c external boundary conditions

boun

side xmin symm /* assign symmetry condition xmin side of model

side xmax absr /* assign absorbing boundary condition (infinite medium)

side ymin absr /* to xmax ymin and ymax side

side ymax absr

end

c define time varying function

func wvlt $freqint 1. /* wavelet impulse function

c piezoelectric loads

symb ascale = 1 /* area scaling for electrode area - required for accurate simulation of impedance amplitude - '1' for axiy model

piez

wndo $i1 $i2 $j2 $j3 /* define electric window to pzt material - minimise for faster model run time

defn top $ascale /* define electrode - name 'top'

node $i1 $i2 $j3 $j3 /* assign nodes for top electrode

defn bot $ascale /* define electrode - name 'bot'

node $i1 $i2 $j2 $j2 /* assign nodes for bottom electrode

/* electrical boundary condition

bc top volt func /* apply voltage condition to 'top' electrode and assign driving signal 'func'

bc bot grnd /* apply ground condition to 'bot' electrode

slvr pard /* use pardiso solver - our new faster electrostatic solver for piezo simulations

end

calc

pres aprs /* calculate pressure and acoustic pressure

disp /* calculate displacement

max aprs pmin pmax /* capture minimum & maximum acoustic pressure and store in 'pmin' & 'pmax' array

end

pout

hist func /* time function - array '1'

histname electrode vq all /* voltage and charge data for all electrodes - array '2-5'

hist ydsp $i1 $i1 1 $j3 $j3 1 /* y-displacement at node on the top electrode - array '6'

end

shap

data xdsp /* x displacement data to be extracted with mode shape

data ydsp /* y displacement data to be extracted with mode shape

freq $freqint /* mode shape '1'

end

extr

defn kirc /* define type extrapolation boundary type - kirchoff

ref in $x1 $y2 /* reference point to determine extrapolation vector

node $i1 $indgrd-1 $j3+5 $j3+5 /* extrapolation boundary at the defined nodal indices

driv func /* storing time function to allow tvr calculation in toolkit

end

prcs /* check models, sets up required data arrays, calculates stable timestep for solver to run model

grph

nvew 2 1

line on /* turn on mesh lines

arrow pole /* turn on poling arrows

plot piez /* plot created electrode

plot matr piez /* plot created electrode on top of model

end

term /* pause model to allow check

c running the model

exec $nexec /* execute model for 'nexec' timesteps

c plot outputs

grph

nvew 3 1 /* set up 3 views for data plots

plot ydsp /* plot calculated data array

plot pmax /* plot max pressure data array

plot 2 /* plot time history 2 - pressure signal at front of defect

end

c term /* pause model to view results

c runtime calculations

symb #get { step } timestep /* extract calculated timestep from prcs command

symb simtime = 40 / $freqint /* simulation time - 40 cycles @ 1 mhz

symb nexec = $simtime / $step /* determine how many timesteps to run full model

symb nloops = 40 /* plotting snapshots during model execution

symb nexec2 = $nexec / $nloops /* partition full simulation into smaller segments for plotting

c setting up output plots

grph

arrow off /* turn off arrows

line off /* turn off mesh lines

set imag avi /* set image capture for movie file generation

nvew 3 1 /* set up 3 plotting windows in layout number 1

end

c create procedure - code that can be executed 'x' number of times

proc plot save /* name procedure 'plot' and save the code

exec $nexec2 /* run model partially

grph

plot ydsp /* plot calculated data array

plot 1 /* plot time history 1 - drive function

plot 3 /* plot time history 3 - charge on top electrode

imag /* snapshot of graphics window for movie generation

end

end$ proc /* end of procedure

c run model by calling 'plot' procedure 'nloops' times

proc plot $nloops

c term /* pause model to view results

data

file out pzt2d.flxdato

out modl /* outputs model geometry

out pres /* outputs pressure data field at the final simulated timestep

out shap/all /* output all requested mode shape data

end

c save symbols to file for later use

symb #get { label } jobname /* get model job name

symb #save '$label.symb' /* save symbol file

c end of input file

stop

.

## 1 comment

Kevin ChanHi,

Please check the tutorial again, we re-published the tutorial and it looks like the images returned.

https://support.onscale.com/hc/en-us/articles/360010064838-PZT-Disc-in-Load-in-Analyst

The outputs formats are proprietary so you will need to the UI to open them:

https://support.onscale.com/hc/en-us/articles/360002182638-Overview-of-Post-Processor

Thanks,

OnScale

Please sign in to leave a comment.