## Boundaries of a Model

Now that we have fully assigned material to the entire grid, the external boundaries of the water need to be set up correctly to reflect how the areas beyond the model would behave in the real world. OnScale has a number of pre-defined boundary conditions to be applied by the user with the boun side command. The most commonly used boundary conditions are:

• free
• nodes can move freely with no external forces acting upon them
• When to use: edge of model is at an air boundary where the movement of boundary nodes are unrestricted
• symm
• boundary for symmetrical geometries
• assumed that what occurs on one side occurs on the other
• When to use: model is the same geometrically and electrically across the boundary
• absr
• energy continues past boundary with no reflections
• When to use: edge of model continues infinitely with the same material (typically a large body of water)
• fixd
• nodes are completely fixed - zero displacement
• energy is perfectly reflected
• When to use: edge of model is infinitely stiff

The model should be set up with the following boundaries to simulate the steel block with a void defect in the middle:

```c boundary conditions & loading

c external boundary conditions
boun
side xmin free    /* assign free boundary condition
side xmax free    /* to xmin xmax and ymax side
side ymin symm    /* assign symmetry condition ymin side of model
side ymax free
end ```

## Time Functions & Piezoelectric Loads

The model has now been fully geometrically defined which means we can technically execute the model however, the model will remain static over time. We need to provide some form of input to stimulate the model which typically falls into 2 categories:

1. Pressure loads - for simulating purely mechanical wave problems
2. Piezoelectric loads - for simulating piezoelectric devices

Before we set up the loading conditions, an input waveform, also referred to as a Time Function, is required. OnScale provides a variety of Time Functions to use in the model ranging from sinusoids, wavelets and user-defined functions too. See func for a full list of input types. There is also a Time Function Tool to set up and visualise the input signals to be used within the model.

Tip: OnScale recommends using the Ricker Wavelet (wvlt) time function due to its broadband performance and low spectral leakage beyond 2.5x the centre frequency.

```c define time varying function
func wvlt \$freqint 1.	                /* wavelet impulse functionplod    pdef pld1 func                      /* create pressure load with name pld1 and assign it the time function input    vctr vct1 1 0 0                     /* create vector direction to be used with pressure load    sdef pld1 vct1 \$i1 \$i1 \$j1 \$j3-1    /* apply pressure load to defined elements    end```

Defining a pressure load requires the plod primary command and the following subcommands:

• pdef
• Sets up the pressure load definition with a reference name and to assign the time function (func) as the load input
• vctr
• Creates a simple vector direction for the pressure load
• The arguments required are: a name followed by vector amplitudes in the XYZ direction
• There are alternate commands to help define the more complex load directions - see plod command for full list.
• sdef
• Defines a surface/line of nodes to generate the pressure load
• The names defined by the pdef and vctr command are used as arguments to set up the exact load function and direction to apply to a set of elements.

Note: When specifying pressure loads, remember that IJK arguments reference the element numbers and not the node. This means that if we want to set up a load that extends to the entire edge of a model, we need add a -1 value to the last node as there is always one element less than total number of nodes in each of the XYZ (IJK) directions.

Within the Wave_Prop.flxinp file:

1. Using the boun primary command apply symmetry (symm) to ymin side and free (free) boundaries to the xmin, xmax and ymax sides using the sidesubcommand.
2. Using the func primary command set up the Ricker Wavelet with the wvlt subcommand - set the the frequency argument to \$freqint and the peak voltage amplitude to 1V
3. Using the plod primary command:
1. Use the pdef subcommand to set up the pressure load with a reference name (pld1) and assign the time function (func)
2. Use the vctr subcommand to create a vector in the +X (1 0 0) direction with a name of vct1
3. Use the sdef subcommand to apply pld1 in the direction of vct1 to the elements at the XMIN side (i1 to i1 & j1 to j3-1)

Progress to tutorial section: Model Outputs

## Tutorial Code

```c boundary conditions & loading

c external boundary conditions
boun
side xmin free    /* assign free boundary condition
side xmax free    /* to xmin xmax and ymax side
side ymin symm    /* assign symmetry condition ymin side of model
side ymax free
end
c define time varying function
func wvlt \$freqint 1.	                /* wavelet impulse functionplod    pdef pld1 func                      /* create pressure load with name pld1 and assign it the time function input    vctr vct1 1 0 0                     /* create vector direction to be used with pressure load    sdef pld1 vct1 \$i1 \$i1 \$j1 \$j3-1    /* apply pressure load to defined elements    end```
0 out of 0 found this helpful