Log in

How to Build Arrays in OnScale

By Chloe Allison 11 November 2019

One of the inherent problems with old legacy FEA software is the inability to run large problems – for example legacy simulation packages lack the capability to simulate large arrays in full 3D . This has stunted the development of devices such as PMUTs as the full systems couldn’t be properly simulated.

With OnScale, 3D array simulations can be carried out. While single cell results are useful, the ideal workflow would go much further. OnScale’s ability to solve large problems allows designers to move beyond the initial single cell models and begin to consider the affect of the array configurations. Using PMUTs as an example designers are now using OnScale to simulate PMUT arrays with the full display stack up, allowing them to assess the impact of manufacturing tolerances on imaging arrays

So, the question is – how do I build an array in OnScale? This post will be focused on how to build array models in the Analyst mode as it provides a lot more flexibility to you the user. We will go through the steps necessary in order to build out an array.

Building Arrays

Using Analyst mode allows designers to quickly go from modelling a simple unit cell model to simulating a full 20×20 array.

Before we go into how easy this is to implement in OnScale we will go over a few things that you should be familiar with if you are already using OnScale if not there will be links to where you can get more information.

Declaring variables: OnScale uses its own scripting language SYMB (symbol) it’s an interpretive language that was developed specifically to handle I/O communication with the Flex family of codes. It is a high-level language that is based on FORTRAN. You need to know how to declare variables in SYMB this is very easy:

Simple. It really is as easy that. If you would like more information on the benefits of scripting and the SYMB language check out our help center!

Keypoints – What and Why: Keypoints are specific points in your model that identify important geometry considerations. They are used both to define XYZ coordinates and IJK nodal locations at each point of the model. OnScale has a few built in SYMB commands that fall under SYMB #KEY that provide an expedient way to quickly define keypoint symbols for standard portioned models.

For more information on all things keypoint related check out our help centre articles on keypoints – you should be using keypoints in all the models you simulate.

Now that we have touched on these two things, we will look at how you can take a simple unit cell model and quickly use variables, and a few built in SYMB commands to pattern out the unit cell into a full array structure. Figure 1 shows the model that we will be looking to pattern out and the model file be provided on this post.

Figure 1. Single element PMUT (left) Cross-sectional structures of PMUT element

The model will be patterned out along the X and Y axis so we will define two variables these variables will control how many elements we have in each row and column:

Figure 2. ncopyi control how many elements will be patterned out along the x-axis, ncopyj controls the number of elements along the y-axis

Having done this, we will use conditional branching constructs in the form of an IF statement to increase our grid extents to accommodate the size of the array we would like to build. Now by using the IF statements if we want to revert to a single element PMUT all we need to do is change both the variables we have defined back to 1.

Figure 3. We have defined 7 keypoints with #KEYCORD and we are copying from the first to last keypoint ncpoy times using #KEYCOPY

Having set up our new grid to accommodate the array all we have to do is pattern out the materials we have already assigned to the grid there are two commands that enable this for this we are going to use SITE REGNDUPL and again just like our keypoints we are going to wrap this command in an IF statement for the same reason as before.

Figure 4. Copies out the single element along the x and y axis respectively
After that all you need to do is set up a GRPH command for plotting and you will see that you now have a 10×10 PMUT array.
Figure 5. 10×10 PMUT Array

Having done this all that is left to do is assign boundary conditions and simulate the array on the cloud. We won’t be doing that here though the output of PMUT array simulations can be fed directly into imaging algorithms to help improve performance.

For designers looking to simulate array structures this methodology can be applied to any model correctly if you keypoint your geometry appropriately.

We recently hosted a joint webinar with Silterra on reducing time to market for fingerprint sensors with cloud simulation, check it out here!


Chloe Allison
Chloe Allison

Chloe Allison is an Application Engineer at OnScale. She received her MA in Electrical and Electronics Engineering from the University of Strathclyde. As part of our engineering team Chloe assists with developing applications, improving our existing software and providing technical support to our customers.