What are DISP and VDISP subroutines?
In Abaqus, DISP and VDISP subroutines are programming routines used to define user-defined boundary conditions. These subroutines provide a flexible way to specify boundary conditions that are dependent on time, location, or both.
Sometimes the boundary conditions in the problems are so complex and there is no way to introduce them in GUI interface of ABAQUS software. For example, when you need to define a boundary condition to be time-dependent, location-dependent, or even both, you should use the DISP and VDISP subroutines. Both DISP and VDISP subroutines offer a powerful toolset for customizing boundary conditions in Abaqus simulations. By utilizing these subroutines, users can accurately define complex boundary conditions that are not readily available through the built-in capabilities of the software. This flexibility is particularly valuable when simulating real-world scenarios that involve non-standard or highly specialized boundary conditions.
In this section, you learn more about these subroutines. Moreover, you will see some practical examples of these subroutines in the real world. Also, the differences between these two subroutines will be discussed.
How to use DISP subroutine
In this part, you’ll learn how to use the DISP subroutine including where to find the subroutine interface, learning about the subroutine variables, and required settings in the Abaqus CAE.
In the DISP subroutine, there is only one variable to be defined, which is the U variable. It is an array consisting of three components. U(1) is for all variable types such as displacement, pore pressure, etc., and U(2) and U(3) are for the time derivatives of the U variable. The U(2) is for the first derivative and the U(3) for the second derivative.
How to use VDISP subroutine
Like in the previous section, this time, you’ll learn how to use the VDISP subroutine including where to find the subroutine interface, learning about the subroutine variables, and required settings in the Abaqus CAE.
There is only one variable in this subroutine that needs to be defined and it’s called “Rval(nDof, nblock)”, which is a 2D array. The “nDof” represents the number of degrees of freedom and the “nblock” is the number of nodal points. With this variable, we can define values of the prescribed variable for degrees of freedom from 1 to 6 for both translation and rotation at the nodes. The variable can be displacement, velocity, or acceleration, depending on the type specified in the associated boundary condition.
Workshop 1: Applying simple multi-directional and conditional displacement in 3d beam
In this workshop, a 3D rectangular beam will be modeled, and multi-directional and conditional displacement will be applied to it with the DISP subroutine. One end of this beam is fixed. On the other end, the displacement boundary condition is applied. The displacement is applied in three directions and would be both time-dependent and location-dependent.
Workshop 2: Applying time and location dependent displacement in 3d beam
In this workshop, the same 3D beam modeled in workshop 1 will be modeled. However, this time, the VDISP subroutine will be used to apply displacement boundary conditions that vary with both time and location. The subroutine will be explained line by line and the results will be discussed.
Workshop 3: Applying simple one-direction displacement, velocity and acceleration in 3D beam in standard and explicit solver
In this workshop, the same 3D beam modeled in previous workshops will be modeled. However, this time, both the DISP and VDISP subroutines will be utilized to apply one-directional displacement, velocity, and acceleration both in the Standard and Explicit solvers.
Read More: GETVRM Abaqus
It would be helpful to see Abaqus Documentation to understand how it would be hard to start an Abaqus simulation without any Abaqus tutorial. Moreover, the general description of how to write a subroutine is available in the article titled “Start Writing a Subroutine in Abaqus: Basics and Recommendations “. If you even do not familiar with the FORTRAN, you can learn the basics via this article: “Abaqus Fortran “Must-Knows” for Writing Subroutines”.