Dalhousie Geodynamics Group


Department of Oceanography
Dalhousie University
1355 Oxford Street
PO Box 15000
Halifax, NS, B3H 4R2
Canada




SOPALE

Sopale Nested

Processing SOPALE Output

Printing

MOZART

TMM (Thermo-mechanical Model)

old SOPALE documentation

Geodynamics home page

SOPALE Boundary Condition Input

Description of input parameters for values of type_bc:


type_bc = 1

vleft vright xsleft xsright

vleft
x (horizontal) velocity at left side boundary and left portion of bottom boundary
vright
x (horizontal) velocity at right side boundary and right portion of bottom boundary
xsleft
x position marking the left boundary of zone at the bottom where x velocity changes linearly from vleft to vright
xsright
x position marking the right boundary of zone at the bottom where x velocity changes linearly from vleft to vright

This type of boundary condition does not allow vertical velocities on the left or right boundaries; i.e. these are not roller boundaries. Use this value of type_bc for models where the deformation does not reach to the ends of the Eulerian mesh.

NOTE: this means there is no need to modify the Lagrangian grid that is outside the Eulerian mesh owing to vertical movements at the left and right boundaries.

For cases where the left and/or right boundaries move vertically, use type_bc = 11.

Back to top


type_bc = 3

[2003/02/10] Use type_bc = 300 instead of type_bc = 3 if you want to use this kind of boundary condition. Type_bc = 300 is a corrected version of type_bc = 3.

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom

**** CAUTION ****

type_bc = 3 has special (likely inconsistent) properties when used with roller side boundary conditions. In the tectonic calculations all nodes on the side boundaries above the base are rollers, therefore the surface nodes on the sides can move vertically.

However, later when the surface is updated for tectonic advection, the vertical advection of the surface nodes at the sides is set to 0, thereby suppressing their advection (inconsistent).

The advection of the surface nodes at the sides due to surface processes is calcuated independently and depends on the parameter nerode_ends.

Note that all other members of the type_bc=3 family allow vertical advection of the surface nodes at the sides. type_bc=3 was the original version and should only be used in special circumstances.

[2003/02/10] Use type_bc = 300 instead of type_bc = 3 if you want to use this kind of boundary condition. Type_bc = 300 is a corrected version of type_bc = 3.

Back to top


type_bc = 4

type_bc = 4 is based on type_bc = 3, with 2 additional features:

  1. corrected behaviour for side roller boundaries (the surface endpoints are allowed to move)
  2. the ability to restrict horizontal movement at the surface. This means that with type_bc=4, we can totally restrict movement at the surface (i.e. if vxtop0 = 1 and vytop0=1).

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vxtop0

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vxtop0
1 = no horizontal velocities on top boundary
0 = horizontal velocities allowed on top boundary
CAUTIONVertical rolling at left and/or rigth boundaries will result in a verical mis-match between the Eulerian grid and the Lagrangian grid at the boundary. No correction is made to the Lagrangian grid for this effect. There is no known simple solution to this problem. User beware!

Back to top


type_bc = 10

This is the same as type_bc=1 with the addition of sinusoidal noise to the x velocities at the bottom boundary between xsleft and xsright.

vleft vright xsleft xsright ampnoise wavlnoise decaylnoise

vleft
x (horizontal) velocity at left side boundary and left portion of bottom boundary
vright
x (horizontal) velocity at right side boundary and right portion of bottom boundary
xsleft
x position marking the left boundary of zone at the bottom where x velocity changes linearly from vleft to vright
xsright
x position marking the right boundary of zone at the bottom where x velocity changes linearly from vleft to vright
ampnoise
amplitude of sinusoidal noise as a velocity in SI units, m/s
wavlnoise
wavelength of sinusoidal noise in SI units, m
decaylnoise
length scale in SI units, m, over which the noise decays to zero adjacent to xsleft and xsright

	 Choice of noise amplitude. For the noise velocity to give a
	 superimposed noise strain rate equal to alpha x mean velocity
	 gradient (where mean velocity = epsilon xx tectonic strain rate),
	 ampnoise should be set to:
 
             ampnoise = alpha x ( deltavx/ltrans)  x ( wavlnoise/4 )
 
         where deltavx = difference of velocity (m/s) across entire width of
                         transition zone (vxright-vxleft)
               ltrans = width (m) of transition zone (xsright-xsleft)
               wavelnoise = wavelength of the noise (m)

Back to top


type_bc = 11

vleft rollleft vright rollright xsleft xsright

vleft
x (horizontal) velocity at left side boundary and left portion of bottom boundary
vright
x (horizontal) velocity at right side boundary and right portion of bottom boundary
xsleft
x position marking the left boundary of zone at the bottom where x velocity changes linearly from vleft to vright
xsright
x position marking the right boundary of zone at the bottom where x velocity changes linearly from vleft to vright
rollleft
1 = allow left endpoint of surface to move vertically
0 = don't allow left endpoint of surface to move vertically
rollright
1 = allow right endpoint of surface to move vertically
0 = don't allow right endpoint of surface to move vertically

WARNING!

type_bc=11 allows vertical rolling of the the left and right boundaries, except at the base. No modification is made to the Lagrangian grid outside the Eulerian domain. This means there will be a mismatch between the Lagrangian and Eulerian meshes at boundaries where rolling has occurred. This is probably okay for cases where material is advected out of the Eulerian domain. It is also okay for boundaries where there is no advection into the domain. It is up to the user to make sure this is satisfied.

Back to top


type_bc = 12

This is like type_bc=11, but allows x velocities to vary along side boundaries (as type_bc 3 does).

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright xsleft xsright

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
 
xsleft
x position marking the left boundary of zone at the bottom where x velocity changes linearly from vxleft_down to vxright_down
xsright
x position marking the right boundary of zone at the bottom where x velocity changes linearly from vxleft_down to vxright_down
WARNING!

type_bc=12 allows vertical rolling of the the left and right boundaries, except at the base. No modification is made to the Lagrangian grid outside the Eulerian domain. This means there will be a mismatch between the Lagrangian and Eulerian meshes at boundaries where rolling has occurred. This is probably okay for cases where material is advected out of the Eulerian domain. It is also okay for boundaries where there is no advection into the domain. It is up to the user to make sure this is satisfied.

Back to top


type_bc = 30

type_bc = 30 is like type_bc=3, but with added sinusoidal noise in the x velocity along the base.

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vybottom decaylvybottom xvyleft xvyright ampnoise wavlnoise decaylnoise xsleft xsright

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is vxleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)

vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2
yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)

vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vybottom
maximum y (vertical) velocity for the bottom boundary between xvyleft and xvyright
The bottom boundary y velocity is set to vybottom between xvyleft and xvyright, zero to the left of xvyleft, and zero to the right of xvyright.
decaylvybottom
length to the right of xvyleft and to the left of xvyright, over which the bottom boundary y velocity decays linearly to zero.
xvyleft
Position on bottom boundary marking the left end of the section where bottom y velocity is nonzero.
xvyright
Position on bottom boundary marking the right end of the section where bottom y velocity is nonzero
ampnoise
amplitude of sinusoidal noise as a velocity in SI, m/s
wavlnoise
wavelength of sinusoidal noise in SI, m
decaylnoise
length scale in SI, m, over which the sinusoidal noise decays to zero adjacent to xsleft and xsright
xsleft
left limit in SI, m, for the added basal sinusoidal noise function and for y velocity on bottom boundary
xsright
right limit in SI, m, for the added basal sinusoidal noise function and for y velocity on bottom boundary
NOTE:
In the Lagrangian grid below the Eulerian grid (i.e. where the y coordinate of the grid is less than 0), the y velocities are set to the bottom boundary y velocity. For now (as of June 4, 2002) we are setting the x velocities in this part of the Lagrangian grid to zero. This means that the mechanical and thermal materials in in this area of the Lagrangian grid are advected but not deformed.

Back to top


type_bc = 31

type_bc = 31 is like type_bc=3, but with added white noise in the x velocity along the base.

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vybottom decaylvybottom xvyleft xvyright ampnoise decaylnoise xsleft xsright

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vybottom
maximum y (vertical) velocity for the bottom boundary between xvyleft and xvyright
The bottom boundary y velocity is set to vybottom between xvyleft and xvyright, zero to the left of xvyleft, and zero to the right of xvyright.
decaylvybottom
length to the right of xvyleft and to the left of xvyright, over which the bottom boundary y velocity decays linearly to zero.
xvyleft
Position on bottom boundary marking the left end of the section where bottom y velocity is nonzero.
xvyright
Position on bottom boundary marking the right end of the section where bottom y velocity is nonzero
ampnoise
maximum amplitude of white noise as a velocity in SI, m/s
decaylnoise
length scale in SI, m, over which the white noise decays to zero adjacent to xsleft and xsright
xsleft
left limit in SI, m, for the added basal white noise function and for y velocity on bottom boundary
xsright
right limit in SI, m, for the added basal white noise function and for y velocity on bottom boundary

Back to top


type_bc = 32

type_bc = 32 is like type_bc = 3, but with added sinusoidal noise in the x body force along the nodes in rows noisenodey1 to noisenodey2 (inclusive).

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vybottom decaylvybottom vxyleft vxyright ampnoise wavlnoise decaylnoise xsleft xsright noisenodey1 noisenodey2

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vybottom
maximum y (vertical) velocity for the bottom boundary between xvyleft and xvyright
The bottom boundary y velocity is set to vybottom between xvyleft and xvyright, zero to the left of xvyleft, and zero to the right of xvyright.
decaylvybottom
length to the right of xvyleft and to the left of xvyright, over which the bottom boundary y velocity decays linearly to zero.
xvyleft
Position on bottom boundary marking the left end of the section where bottom y velocity is nonzero.
xvyright
Position on bottom boundary marking the right end of the section where bottom y velocity is nonzero
ampnoise
amplitude of sinusoidal noise as a velocity in SI, m/s
wavlnoise
wavelength of sinusoidal noise in SI, m
decaylnoise
length scale in SI, m, over which the sinusoidal noise decays to zero adjacent to xsleft and xsright
xsleft
left limit in SI, m, for the added sinusoidal noise function on rows noisenodey1 to noisenodey2; also the left limit for the y velocity on bottom boundary
xsright
right limit in SI, m, for the added sinusoidal noise function on rows noisenodey1 to noisenodey2; also the right limit for y velocity on bottom boundary
noisenodey1
top row number where sinusoidal noise is to be added to x body force
noisenodey2
bottom row number where sinusoidal noise is to be added to x body force

Back to top


type_bc = 33

type_bc = 33 is like type_bc = 3, but with added white noise in the x body force along the nodes in rows noisenodey1 to noisenodey2 (inclusive).

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vybottom decaylvybottom vxyleft vxyright ampnoise decaylnoise xsleft xsright noisenodey1 noisenodey2

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vybottom
maximum y (vertical) velocity for the bottom boundary between xvyleft and xvyright
The bottom boundary y velocity is set to vybottom between xvyleft and xvyright, zero to the left of xvyleft, and zero to the right of xvyright.
decaylvybottom
length to the right of xvyleft and to the left of xvyright, over which the bottom boundary y velocity decays linearly to zero.
xvyleft
Position on bottom boundary marking the left end of the section where bottom y velocity is nonzero.
xvyright
Position on bottom boundary marking the right end of the section where bottom y velocity is nonzero
ampnoise
maximum amplitude of white noise as a velocity in SI, m/s
decaylnoise
length scale in SI, m, over which the white noise decays to zero adjacent to xsleft and xsright
xsleft
left limit in SI, m, for the added white noise function on rows noisenodey1 to noisenodey2; also the left limit for y velocity on bottom boundary
xsright
right limit in SI, m, for the added noise function on rows noisenodey1 to noisenodey2; also the right limit for y velocity on bottom boundary
noisenodey1
top row number where white noise is to be added to x body force
noisenodey2
bottom row number where white noise is to be added to x body force

type_bc = 300

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 reference_pressure_column reference_material [ pump_time [ isos_time_scale [ delta_vel_factor ]]]

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
reference_pressure_column
If this value is 0, then no pressure pumping is done.
If this value is positive, it is the number of elemental column of Eulerian grid to use for the reference pressure. Example: if the reference_pressure_column = 20, then the lithostatic pressure at the base of the 20th (elemental) column at timestep 1 is the pressure value that we will want to maintain
If this value is negative, then it means that on a restart, we will use its absolute value as the number of the elemental column of the Eulerian grid to use for the reference pressure, and we will calculate using the lithostatic pressures in the restart file.
Normally, on a restart, we would use the reference pressure saved in the restart file. However, if the restart file was from a run without the pressure pump option, the reference pressure would have been saved as 0; in this case we would want to re-calculate a reference pressure.
If the pressure pump is ON, then align_time should be 1 on any restarts. (Since version 2009-07-26_22.9)
reference_material
material number for reference material The velocities will be adjusted using the density of the reference material in the calculation of pressure. [NOTE: for code from code-nov16-05-matsets+ and later, this is the material "color" number, not the material set number.]

The parameters reference_pressure_column and reference_material were added with code-sep13-04-pump for the "pressure pump" option. Pressure pumping maintains the pressure at the base of the model by adjusting the vxleft_down and vxright_down to fine-tune the flow of material in or out of the model. A value of delta_vel (delta velocity) is calculated based on the density of the reference material, the reference pressure we want to maintain, and the values of yleft2 and yright2. The delta_vel is then added to the values of vxleft_down and vxright_down.

Since version 2009-07-26_21.2

pump_time
Length of time the pump will take to correct pressure differences. For most uses this should be set to the mechanical timestep length, dt, in which case the pump attempts to correct pressure differences in one mechanical timestep.

Said another way: the time (in seconds) over which delta_vel is calculated. Optional parameter.

pump-time is a special parameter only to be used with models that have special initial conditions including an initial phase of special isostatic equilibration. Standard models should use the default dt. Users wanting to isostatically re-equilibrate models and/or control bathtub oscillations should use the parameter delta_vel_factor (see below)
Default is dt.

Since version 2009-07-26_21.3

Calculation of delta_vel changed:

  • Before time = pump_time, normal start, to calculate delta_vel, use
    • plithob average from the first call to pump_calculate_deltav
    • pump_time
  • Otherwise, to calculate delta_vel, use
    • the current plithob average.
    • dt

Since version 2009-07-26_22.9

Calculation of delta_vel changed: see the source code in pressure_pump.f for details.

Since version 2009-07-26_23.0

isos_time_scale
scale factor, used in the calculation of delta_vel2.

It is the number of timesteps that isostatic re-equilibration will take

isos_time_scale is a special parameter used in conjuction with pump_time and is only to be used with models that have special initial conditions including an initial phase of special isostatic equilibration. Standard models should use the value 1.0d0

Default is 10.0

Since version 2009-07-26_29.0

delta_vel_factor
scale factor used to multiply delta_vel determined by the pressure pump. The velocity correction to the boundary conditions that is applied is
delta_vel_factor x delta_vel
This means that only the fraction delta_vel_factor of the velocity correction (delta_vel) is applied at this time step.

For example delta_vel_factor = 0.1d0 will result in pressure corrections that are spread over approximately 10 timesteps. Using the delta_vel_factor = 1.0 can exacerbate 'bathtub oscillations' - violent swings in the model velocities that alternate each timestep. These can be damped by using values between 0.5d0 and 1.0d-2

Default is 1.0 up to version 2013-06-28_1.0
Default is 0.1 after version 2013-06-28_1.0

Back to top


type_bc = 301 (deprecated)

This version is deprecated.

(before version 2013-01-29_1.0)

Similar to type 300. In type 300, constant velocities are applied to the top and bottom of each side of the model. The velocities are supposed to be choosen so that the mass (or volume, if density is assumed to be constant) in the model remains constant.

In type 301

  • In each time step, at the top of the mechanical loop, before the iteration over velocity solutions starts, the bottom velocities (vxleft_down, vxright_down) are re-calculated (from vxleft_up, vxright_up, and geometry) to values that conserve mass. Actually, the attempt is to conserve volume. We want volume in = volume out.
  • The distribution of volumes (into or out of) the bottom is balanced as described under fraction_left.
  • Then mantle_wind_vel is added to the bottom velocities.
  • At the bottom the mechanical loop, in each time step, after the velocity calculation has completed, the upper velocities (vxleft_up, vx_right_up) are re-calculated so that the velocities applied to the top left region and the top_right region are scaled so that the corresponding forces approximate target_force_left and target_force_right. The scaling is described below .

Comparing to type 300:

  • The parameter vxleft_down has been replaced by target_force_left.
  • The parameter vxright_down has been replaced by target_force_right.
  • Optional parameters have been added. See below for a complete list.

The calculations use either the tectonic or total driving forces depending on the value of use_tectonic_forces.

use_tectonic_forces = 1 , the forces are the tectonic forces
use_tectonic_forces = 0 , the forces are the total forces

tectonic horizontal driving force (force_tect) = total horizontal driving force ( force_dyna) - mean stress (force_epress) see .out file for values of force_tect, force_dyna and force_epress

This means that the user must also supply either a tectonic or total driving force as the target_force. This can either be obtained from the output of an exisiting sopale run of the same model or by estimating the forces. Generally, the best choice is to run a spin-up phase without setting target forces and then use the output from this model to restart with target forces obtained from the .out file of the spin-up.

The rescaling formula (for vxleft_up, vxright_up) is:

Vre = Vc (+)OR(-) dabs(Vc) * D * (dabs(ft - f) / (dabs(ft) + dabs (f)))

This formula is used for rescaling both left and right boundary velocities. So there is Vre_right and Vre_left.

There are 2 versions of the formula. When sign = sign_positive use version with + sign. When sign = sign_negative use version with - sign.

D is user supplied damping factor with value between 0.05 and 0.3 (add to input)

Vre is the rescaled boundary velocity for the upper (lithospheric part) of the model. It is the value to be used in bc301 for the boundary velocity for this timestep

Vc is the 'current' value of the boundary velocity (the value used for the previous timestep)

f is the tectonic boundary force from the last time step, f_left and f_right It is calculated as a moving average of the force_average_ts last timesteps, where force_average_ts is user supplied ....good value is 50.

ft_left and ft_right are the target tectonic boundary forces specified by the user in input. They can be changed on a restart but are constant during the model run.

The volume displaced by the upper velocities is calculated by summing velocity * area. (Time is the same for upper and lower velocities, and therefore left out.)

volume = velocity * area

mantle_wind_vel
mantle_wind_vel (in the usual SI units). This velocity is added to the velocites in the lower region ....below the lithosphere, after all of the other velocities have been set using the rescaling velocity. Note that the addition of this velocity is with the same sign on both sides....in one side, out the other.
Default: 0.0

fraction_left
Determines how the bottom velocities are distributed between the left and right sides of the model.

'separate': Each side will be balanced separately. After vxleft_up is re-calculated, vxleft_down will be set so that volume_in = volume_out on the left side. The right side calculation will be similar.

<number>: The volume change due to the upper velocities will be distributed (in the lower region) between the left and right sides of the model.
  • fraction_left * volume_change will go into, or out of, the left side.
  • (1 - fraction_left) * volume_change will go into, or out of, the right side.
0.5 will give equal volumes on each side.
Default: 'separate'

delta_vel_toler
When the pressure pump calculates delta_vel, the calculation includes subtracting plithob in the reference column from the average plithob. If abs ((ref_plithob - ave_plithob) - 1.0) < delta_vel_toler, the calculation is skipped and delta_vel is set to zero.
Default: 0.0
use_tectonic_forces
use_tectonic_forces = 1 , the forces are the tectonic forces
use_tectonic_forces = 0 , the forces are the total forces
Default: 1

In each timestep after vxleft_up and vxright_up are re-calculated they are compared to these minimum and maximum velocities and set to one of these values if 'out of range'.

In version 2011-12-01_9.0
In version 2012-06-08_2.0
Since version 2012-06-08_2.0, an optional parameter:

  • delta_vel_toler

Since version 2012-11-08_1.0 an optional parameter:
  • use_tectonic_forces

type_bc = 301

type 301: In each time step,

  • At the top of the mechanical loop, before the iteration over velocity solutions starts, the bottom velocities (vxleft_down, vxright_down) are calculated (from vxleft_up, vxright_up, and geometry) to values that conserve mass. Actually, the attempt is to conserve volume. We want volume in = volume out.
  • The distribution of volumes (into or out of) the bottom is balanced as descibed under fraction_left.
  • Then mantle_wind_vel is added to the bottom velocities.
  • At the bottom the mechanical loop, after the velocity calculation has completed, the upper velocities (vxleft_up, vx_right_up) are re-calculated so that target_force_left is applied to the top left region, and target_force_right is applied to the top right region.

version 2013-01-29_1.0 only

The rescaling formula (for vxleft_up, vxright_up) is:

Vre = Vc (+)OR(-) dabs(Vc) * D * (dabs(ft - f) / (dabs(ft) + dabs (f)))

Where

D is a user supplied damping factor. Suggested value between 0.05 and 0.3

mapping from equation variables to variables (others below)
equation variable variable
D vxleft_up_factor, vxright_up_factor


version 2013-02-08_2.0 (and later)

The rescaling formula (for vxleft_up, vxright_up) is:

Vre = Vc (+)OR(-) dabs(Vd) * (dabs(ft - f) / (dabs(ft) + dabs (f)))

Where

Vd is a user supplied velocity scale. Suggested value is approximately 0.02 cm/yr (in metres/sec) meaning that it will take at least 100 time steps to rescale the boundary velocity by 2 cm/yr. Essentially, Vd sets a limit on the amount by which the current velocity Vc can be changed each tmestep.

Vre is the rescaled boundary velocity for the upper (lithospheric part) of the model. It will be used in the next time step.

Vc is the current value of the upper boundary velocity (the value used for the current timestep)

f is calculated from the boundary force, f_left and f_right. The calculations use either

  • tectonic, or
  • total driving force
depending on the value of use_tectonic_forces. Once the type (tectonic or total) of force has been selected, f is calculated as either
  • the raw boundary force from the current time step.
  • the output of a low-pass time series filter, where the time series is the boundary force of the previous filter_length time steps. filter_alpha sets the filter sensitivity.

ft (target_force_left and target_force_right) are the target boundary forces specified by the user. They can be changed on a restart but are constant during the model run.

This formula is used for rescaling both left and right boundary velocities. So there is Vre_right and Vre_left.

There are 2 versions of the formula.

  • When sign = sign_positive use version with + sign.
  • When sign = sign_negative use version with - sign.

C Left boundary use left boundary values of  Vc,  f and ft in formula
C -------------------------------------------------------------------
C Velocity is negative (outflux) and f is tensile  (+ve)
  if (Vc.le.0d0. and .f.ge.0d.0) then
C If (f > ft) decrease Vc (reduces f)
    if (f.ge.ft)  sign = sign_positive
    elseif  (f.le.ft) sign  = sign_negative

C Velocity is negative (outflux) and f is compressive (-ve)
  if (Vc.le.0d0. and .f.le.0d.0) then
C If (f > ft) increase Vc (reduces f)
    if (f.ge.ft)  sign = sign_positive
    elseif  (f.le.ft) sign  = sign_negative

C Velocity is positive (influx) and f is tensile (+ve)
  if (Vc.ge.0d0. and .f.ge.0d.0) then
C If (f > ft) increase Vc (reduces f)
    if (f.ge.ft)  sign = sign_positive
    elseif  (f.le.ft) sign  = sign_negative

C Velocity is positive (influx) and f is compressive (-ve)
  if (Vc.ge.0d0. and .f.le.0d.0) then
C If (f > ft) decrease Vc (reduces f)
    if (f.ge.ft)  sign = sign_positive
    elseif  (f.le.ft) sign  = sign_negative

C Right boundary use right boundary values of  Vc,  f and ft in formula
C ---------------------------------------------------------------------

C Velocity is negative (influx) and f is tensile  (+ve)
  if (Vc.le.0d0. and .f.ge.0d.0) then
C If (f > ft) increase Vc (reduces f)
    if (f.ge.ft)  sign = sign_negative
    elseif  (f.le.ft) sign  = sign_positive

C Velocity is negative (influx) and f is compressive (-ve)
  if (Vc.le.0d0. and .f.le.0d.0) then
C If (f > ft) decrease Vc (reduces f)
    if (f.ge.ft)  sign = sign_negative
    elseif  (f.le.ft) sign  = sign_positieve

C Velocity is positive (outflux) and f is tensile (+ve)
  if (Vc.ge.0d0. and .f.ge.0d.0) then
C If (f > ft) decrease Vc (reduces f)
    if (f.ge.ft)  sign = sign_negative
    elseif  (f.le.ft) sign  = sign_positive

C Velocity is positive (outflux) and f is compressive (-ve)
  if (Vc.ge.0d0. and .f.le.0d.0) then
C If (f > ft) increase Vc (reduces f)
    if (f.ge.ft)  sign = sign_negative
    elseif  (f.le.ft) sign  = sign_positive

This means that the user must also supply either a tectonic or total driving force as the target_force. This can either be obtained from the output of an exisiting sopale run of the same model or by estimating the forces. Generally, the best choice is to run a spin-up phase without setting target forces and then use the output from this model to restart with target forces obtained from the .out file of the spin-up.

The volume displaced by the upper velocities is calculated by summing velocity * area. (Time is the same for upper and lower velocities, and therefore left out.)

volume = velocity * area

type_bc = 312

type_bc = 312 is like type_bc = 3, but with added white noise in the y velocity along the base.

vxleft_up vxleft_down yleft1 yleft2 rollleft vxright_up vxright_down yright1 yright2 rollright vytop0 vxbottom0 vybottom decaylvybottom xvyleft xvyright ampnoise decaylnoise xsleft xsright

vxleft_up
x velocity at left boundary above yleft1
vxleft_down
x velocity at left boundary below yleft2
yleft1
vertical position at left boundary, above which the x velocity is vxleft_up
yleft2
vertical position at left boundary, below which the x velocity is yleft_down

In the area between yleft1 and yleft2, the x velocity makes a smooth transition between vxleft_up and vxleft_down.

rollleft
= 1 means roller (free slip) boundary condition on left boundary
= 0 means no vertical component to boundary condition on left boundary, i.e. pinned (no slip)
vxright_up
x velocity at right boundary above yright1
vxright_down
x velocity at right boundary below yright2

In the area between yright1 and yright2, the x velocity makes a smooth transition between vxright_up and vxright_down.

yright1
vertical position at right boundary, above which the x velocity is vxright_up
yright2
vertical position at right boundary, below which the x velocity is yright_down
rollright
= 1 means roller (free slip) boundary condition on right boundary
= 0 means no vertical component to boundary condition on right boundary, i.e. pinned (no slip)
vytop0
= 1 to set a rigid top (i.e. no vertical velocities on top boundary)
= 0 vertical velocities allowed on top boundary
vxbottom0
= 1 for no slip on bottom (no horizontal velocities on bottom)
= 0 horizontal velocites allowed on bottom
vybottom
maximum y (vertical) velocity for the bottom boundary between xvyleft and xvyright
The bottom boundary y velocity is set to vybottom between xvyleft and xvyright, zero to the left of xvyleft, and zero to the right of xvyright.
decaylvybottom
length to the right of xvyleft and to the left of xvyright, over which the bottom boundary y velocity decays linearly to zero.
xvyleft
Position on bottom boundary marking the left end of the section where bottom y velocity is nonzero.
xvyright
Position on bottom boundary marking the right end of the section where bottom y velocity is nonzero
ampnoise
amplitude of white noise as a velocity in SI, m/s
decaylnoise
length scale in SI, m, over which the white noise decays to zero adjacent to xsleft and xsright
xsleft
left limit in SI, m, for the added basal white noise function and for y velocity on bottom boundary
xsright
right limit in SI, m, for the added basal white noise function and for y velocity on bottom boundary

Back to top



This page was last modified on Thursday, 01-Aug-2013 13:59:33 ADT
Comments to geodynam at dal dot ca