Basic Outline of Setting Up an Ice Sheet in ADINA-F - in general
terms and with a specific example.
Tony Gades, UW Geophysics
Spring 2001
UPDATED LAST: Tuesday, 26 June, 2001 14:01:31
Download this document as
an Adobe Acrobat .pdf file: BasicOutlineofSettingUpanIceSheetinADINA.PDF
The best way to learn some of the idiosyncrasies of ADINA
is to start right in. I personally ended
up wasting quite a bit of time reading through the -very- extensive
documentation. The problem is that
there are endless features to this model that are not of any use to us as ice
modelers - so reading all of that stuff ends up wasting time. The documentation is pretty good though, and
it usually helps you figure out specific answers to specific questions. Another useful feature are the worked
examples.
The instructions I include here are specific to ADINA
V7.4. Earlier versions work differently
and probably later versions will change some things as well. The good thing is that the changes I have
seen in the past year of working with this program have been for the better so
it is worth upgrading and figuring out the differences.
General Overview:
ADINA - (Automatic Dynamic Incremental Nonlinear
Analysis) has several parts to the overall package. The relevant portions of the package to ice flow modeling are:
ADINA-F: for FEM models of fluids
ADINA-T: for doing heat flow
ADINA-PLOT:
for viewing the results of a model.
I start by building a basic ice sheet in ADINA-F. This model will be a basic ice sheet based
on actual Roosevelt Island bed/surface topography. The first goal will be to set up an ice sheet and just let it
flow - without accumulation. Then we
add accumulation and finally heat flow.
A Few General Tips:
1)
As with any program, save often.
2)
The tiny icons in the ADINA gui are not that useful in my
opinion but are redundant with menu options.
I opt for the menu options in describing steps.
3)
There are many ways to do many of the things I describe
here. I have tried many different ways
of doing things and these steps are just what I estimate to be the best or
simplest.
4)
ADINA allows you to create a simple ASCII text script
file of the commands that produce your model (a ".in" file). It seems as though one can get only so far
by using the menu options/icons in the gui and at some stage one must directly
edit the .in file. For example, I could
not determine any other way to specify a velocity function aside from directly
editing the command file. A combination
of using the ADINA-gui and editing the resulting command file seems to be most
efficient.
5)
If you find it simpler to just have a look at a command
script file to figure out how this model works, here is one. RI_IceSheet_NoAccumulation.in
HERE ARE THE STEPS:
1) Give the model a descriptive title and Save the File:
The heading
is just a label - sort of like a comment at the beginning of some code. In ADINA-F, define a heading by Menu
Option: Control->Heading (this
means click on the Control menu, then select the Heading option)

Save the
file as a ".in" file. This
yields an ASCII text file of all of the commands and allows us to edit the
thing later - this is not the default.
Menu Option: File->SaveAs

Choose "Save As Type" ADINA-IN Command Files.
2) Decide on a geometry.
a) If complex geometry, then
use the template matlab file to produce a file in ADINA.in format.
b) If simple geometry, then
just make a sketch and make a table of xy or yz points. It is best to label the points clockwise or
counterclockwise around the geometry of the ice sheet.
Here is a very simple example in the YZ plane with Z
positive upward, Y positive to the right.
1000 meters thick, flat surface, 10000 meters wide.
Point# X Y Z
1 0 0 0
2 0 10000 0
3 0 10000 1000
4 0 0 1000
Here is how you actually define points from within
ADINA-F. Menu option: Geometry->Points

3) Define the lines that outline the geometry of the ice sheet.
Complex geometries
require using more complex line types.
For example, the "polyline" type allows you to connect (via
linear or other types of interpolation) many points. This is what I use for defining actual ice surfaces and bed.
Very simple ice sheets like the
one above has 2 cliff edges, a surface and a bed requires defining
4 simple lines that are defined only by the 2 end points.
Line# Point1 Point2
1 1 2 (bed)
2 2 3 (RHS
cliff)
3 3 4 (Surface)
4 4 1 (LHS cliff)
In ADINA-F, you define lines from: Geometry->Lines->Define
Click "ADD" button and then fill in the
information:

Instead of typing in the points, you can click the
"P" box to the right of the "point 1" entry, this will take
you to the main ADINA screen and then you can just click on the two points that
you wish to use to define line 1. Click
"OK" when done and then "ADD" again and repeat for all 4
lines. There are many line types but
the 2 I find most useful are "straight" and "polyline".
4) Define the 2-D surface or surfaces that define the model.
The
"patch" type surface works well for defining the 2-d surface. Carrying on with the simple ice sheet, one
can define a patch that is bounded by the 4 lines. The "surface" in the 2-D case refers to the body of the
ice sheet.
In ADINA-F Geometry->Surfaces->Define

Again, there are many ways to define a surface but a
patch of 4 lines works well.
5) Define the Material Model properties
To
read the details of how I got help sorting this out, click on this link: materialmodel.html
Otherwise,
you can just try this for -10C ice:
Menu option: MODEL->MATERIALS->POWER LAW->ADD

Or
you can just try this for -25C ice:

6) Define the flow assumptions; Set solution to transient
Menu Option: MODEL->FLOW
ASSUMPTIONS

Now click option to
change to transient:

7) Define the mesh density
This is the step where
you define how the mesh nodes are distributed within the model. There are many ways to do this, but this method
allows you to specify that the nodes are preferentially stacked toward the
divide and if desired toward the bottom.
To do this I use the "Geometric" progression of element edge
lengths.
The example below divides
the nodes evenly from top to bottom by:
1) Not selecting the central biasing in v direction.
2) Using a length ratio of 1 in the "v"
direction.
The example
preferentially places nodes toward the horizontal center by:
1) Use central biasing for the u Direction.
2) A value of less than 1 for the "Length ratio
of element edges".
Menu Option: MESHING->MESH
DENSITY->SURFACE

8) Define element type
Menu Option: MESHING->ELEMENT GROUPS->ADD

9) Define the boundary conditions for surface and bed
To begin with we want to
have a free surface boundary condition for the ice sheet surface and a no-slip
"wall" condition for the bed.
MENU OPTION: MODEL->SPECIAL
BOUNDARY CONDITIONS->ADD
Add condition 1 for the
wall condition of the bed and apply it to line 3.

Add condition 2 for the ice
sheet surface and apply it to line 1:

10)Pressure Fixity
For the model to arrive
at a solution, you have to define a pressure zero - this is arbitrary and where
you choose to set the zero doesn't seem to affect the model in any way :
MENU OPTION:
MODEL->USUAL BOUNDARY
CONDITIONS/LOAD->ZERO VALUES->ADD
We need to define a new type of zero value so lets name it PRESSURE.

Then define the
properties of this new zero:

Select only the
"Pressure" box as above, Then click "Apply Zero Values" and apply the zero to some point on the
model - either type in a point number or click in the green box with the mouse
and it will allow you to select a point, hit escape to come back to this
box. Make sure that the zero applied is
the PRESSURE zero that we just defined as shown below.

11) Define Time steps
I set this entire model
up in MKS units. This means time is in
seconds.
1 year = 3.155693e+07 seconds
So, that is the magnitude
needed for a single year time step. To start,
set up the model for 100 steps of 1year each.
MENU OPTION: CONTROL->TIME
STEP

12) Add equilibrium velocity conditions at margin. (INCOMPLETE)
In this next and final step, we have to prescribe a
velocity profile at the margins of the ice sheet that give equilibrium assuming
some accumulation rate. That is, a
velocity profile that gets rid of an amount of ice equal to sum total added at
the surface. Paterson, Chapter 11,
details all of this.
The logistics of adding this velocity profile are much
easier to do if you actually edit the command file - I don't know of any better
way to do this.
The general idea is that first you specify a
"line-function" as a table of values and then you apply a
"velocity load" to a line in your model. The table can include as many values as desired - the more
values, the higher resolution the function you specify. This method is a bit clunky but appears to
be the only option.
So, if I want to specify a velocity function like this
for example:

I would do it by
specifying a table like this (in this case I arbitrarily have chosen a table
length of 26 points):
Again, units are MKS so
meters/second - an unfortunate set of units for ice flow...
*
* Ice Stream Edge Velocity Profile for equilibrium given
* Equilibrium
u(z) for Accumulation Rate=0.10, EdgeThicknesses=538.5,517.8,
HalfWidth=18000.0
*
LINE-FUNCTIO NAME=1 TYPE=TABULAR NPOINT=26
@CLEAR
1 1.324922e-007
2 1.324918e-007
3 1.324867e-007
4 1.324647e-007
5 1.324053e-007
6 1.322802e-007
7 1.320526e-007
8 1.316778e-007
9 1.311029e-007
10 1.302668e-007
11 1.291004e-007
12 1.275262e-007
13 1.254589e-007
14 1.228048e-007
15 1.194622e-007
16 1.153212e-007
17 1.102637e-007
18 1.041635e-007
19 9.688641e-008
20 8.828990e-008
21 7.822338e-008
22 6.652811e-008
23 5.303723e-008
24 3.757571e-008
25 1.996040e-008
26 1.126558e-022
@
*
LOAD VELOCITY NAME=1 VX=FREE VY=-1.00000000000000 VZ=FREE
*
* Velocity Profile for equilibrium given
* Equilibrium
u(z) for Accumulation Rate=0.10, EdgeThicknesses=538.5,517.8, HalfWidth=18000.0
*
LINE-FUNCTIO NAME=2 TYPE=TABULAR NPOINT=26
@CLEAR
1 1.922721e-008
2 3.629097e-008
3 5.134995e-008
4 6.456770e-008
5 7.610079e-008
6 8.609884e-008
7 9.470451e-008
8 1.020535e-007
9 1.082746e-007
10 1.134895e-007
11 1.178130e-007
12 1.213531e-007
13 1.242107e-007
14 1.264796e-007
15 1.282469e-007
16 1.295926e-007
17 1.305898e-007
18 1.313045e-007
19 1.317960e-007
20 1.321164e-007
21 1.323109e-007
22 1.324179e-007
23 1.324687e-007
24 1.324875e-007
25 1.324919e-007
26 1.324922e-007
@
*
LOAD VELOCITY NAME=2 VX=FREE VY=1.00000000000000 VZ=FREE
*
Here is an example where these velocities are actually
applied. RI_IceSheet_NoAccumulation.in
13) TRY IT
To give it a try, start up
ADINA-AUI and load this file: RI_IceSheet_NoAccumulation.in
Start up ADINA, then Menu Option: FILE->OPEN
make sure to change file type to "ADINA-IN Command
Files" as below.

Then do a load plot to
see the model setup. This is
accomplished by clicking on the icon shown in this image:

Now run the thing. Menu Option: SOLUTION->DATA FILE/RUN
You have to give the
output ".dat" file a name.

The initial time steps
will bring up some warnings - this is the result of the model not being stable
with the initial setup. This settles
out after a few time steps.
Eventually you should get
this popup box:


14) EXAMINE THE RESULTS
We have to switch
programs to ADINA-PLOT.

Click yes to the
question:

Now we need to load the
results file.
Menu Option: FILE->OPEN
and select the porthole
(results) file we generated by running the model.

It is good to do a mesh
plot which shows the results and the deformed mesh:

But, the best way to view
the results is to get rid of the mesh.
There is a standard set of settings that I make to the plotting
options. I have included in this
file: plotcommands.ses
This file sets up the
plotting preferences to only plot the outline of the model. Load this sequence of commands with MENU
OPTION: FILE->OPEN then select file type of
"Session Files" and load the
plotcommands.ses file. The
commands will automatically run.

This will yield an image something
like this - a vector plot showing the end velocity field. In the plotcommands file, I have selected
that the velocity vectors be scaled to yield meters/year rather than the
useless meters/second.

After the