Not-perpendicular prescribed velocity conditions

Dear all,
I am currently stuck in a problem related to ASPECT prescribed velocity conditions:
I am working on a 3d box crustal model, in which I would like to assign
different velocity components at different areas of the top surface.
In particular, I would like to assign velocities which are not perpendicular to the outline boundaries.
Is there a way to accomplish this?

Regards,
Nora

hi Nora,

if by “different components at different areas” you mean that on part of the surface you want to prescribe [x,y,z] and on a different part you want to prescribe [y,z] (for example), then you will need to create a new geometry that assigns different boundary names/ids to the respective regions. See “box with lithosphere boundary indicators” for an example.
If you just want to have more freedom in assigning velocities (perpendicular or not), you can write your own plugin (see source/boundary_velocity/) if the existing (functions, ascii data, etc.) are not flexible enough. In your plugin you can define for every point x,y,z what your velocities should be.

We would like to apply a traction at the base of the model domain.
Our first try was to write this Function:

set Function expression = if (x>=74e3 && y>=58e3 , 0.47cm/year, 0cm/year) ; if (x<=54e3 && y>=38e3 , 0.49cm/year, 0cm/year) ; 0

Next step would be to add a component to the y axes, so that the bottom-left part of the domain goes toward the NW, whereas the top-right part should go towards the NE.

We tried with:

set Function expression = if (x>=64e3 && y>=48e3 , 0.17cm/year, 0cm/year) | if (x<64e3 && y<=58e3 , -0.348cm/year, 0cm/year) ; if (x>=64e3 && y>=48e3 , 0.44cm/year, 0cm/year) | if (x<64e3 && y<=58e3 , 0.338cm/year, 0cm/year) ; 0

Which could be the best way to achieve this?

Thanks again!
Nora

Well, what happens if you use it this way?

There is more than one way to do this. If you are able to write an expression as a function like you do above, then that is a reasonable way to do it.