Abaqus UAMP & VUAMP subroutines Introduction
In Abaqus, the term “amplitude” refers to an essential parameter used to describe the time-dependent changes of boundary conditions, loads, or other input signals in a finite element analysis. The Amplitude specifies how the magnitude of a given load or boundary condition varies over time. This is crucial in accurately representing the behavior of structures and components, as many real-world applications involve time-varying loads and boundary conditions.
Accurately defining amplitudes is essential in ensuring the fidelity and reliability of finite element simulations, particularly in industries such as automotive, aerospace, and machinery, where dynamic and time-varying loads are prevalent. Ultimately, understanding and properly defining amplitude in Abaqus is crucial for engineers aiming to predict and optimize the behavior of structures and components under real-world operating conditions.
Some of the key reasons why amplitude functions are important in load definition within Abaqus include:
- Time-varying loads: Many real-world loading conditions are not constant and may vary over time. Amplitude functions allow you to define how the load changes with time, enabling more realistic and accurate simulations.
- Dynamic simulations: In dynamic simulations, such as impact or vibration analyses, the loads and boundary conditions often vary over time. Amplitude functions are essential for accurately capturing these dynamic effects.
- Transient analysis: In transient analyses, where the effects of time-dependent loads are of interest, amplitude functions are used to define the time history of these loads.
- User-defined flexibility: Amplitude functions provide the flexibility to define complex, user-defined load variations, allowing for customized and detailed representations of the loading conditions.
- Integration with other software tools: The ability to define complex load variations using amplitude functions also facilitates the integration of Abaqus with other software tools and data sources that provide time-dependent load data.
In Abaqus, user subroutines play a crucial role in customizing and extending the capabilities of the software for specific engineering applications. The user subroutine amplitude, specifically, allows users to define customized amplitude functions for time-varying loads and boundary conditions. By utilizing the user subroutine amplitude, engineers and analysts can implement their own mathematical algorithms or complex time history functions to precisely model the time-dependent variation of loads and boundary conditions within the finite element analysis.
This package introduces UAMP and VUAMP subroutines as user amplitude subroutines in Abaqus step by step through the following sections:
“What are UAMP and VUAMP subroutines?”
In this section amplitude definition and different available amplitudes in Abaqus are discussed. One of the available amplitudes in Abaqus is “User” which is the subject of this tutorial. User amplitude requires a UAMP or VUAMP subroutine in order to create an amplitude curve for loads, boundary conditions, etc.
You may use UAMP for Abaqus/Standard or VUAMP for Abaqus/Explicit in the following situations:
- Your amplitude is not available in Abaqus pre-defined amplitudes.
- Your amplitude is dependent on the analysis state variables or properties.
- Your amplitude uses solution-dependent sensors.
This section introduces the UAMP/VUAMP subroutines and the cases you may need to use these two user amplitudes in your analysis.
“How to use UAMP and VUAMP subroutines?”
In this section, after finding both UAMP and VUAMP blocks in Abaqus software documentation, the subroutine interface and variables used in each one are discussed in detail. The UAMP/VUAMP Subroutines contain three main sections:
- In the first section of the Subroutine, the variables are introduced
- The second section is for defining parameters and flags. Flags are used to check or determine a parameter calculation status.
- The third section contains defining dimensions of the arrays and characters. The user amplitude formulation must be written as a subroutine in this section.
The UAMP/VUAMP variables are divided into three groups:
- Variables to be defined
- Variables that can be updated
- Variables passed in for information
Each variable group containing several variables inside itself is explained. Then you will understand how to implement these variables in your subroutine to define your own amplitude.
“What is the difference between UAMP and VUAMP subroutines? “
In this section, the differences between these two subroutines are mentioned. The main difference between these two subroutines is the solver you use for each in Abaqus. In the case of Abaqus/Standard, you must use the UAMP subroutine. In the case of Abaqus/Explicit you must use the VUAMP subroutine. The variables almost have the same definition but may be different in the case of some “Updatable Variables” and “Passed in for information Variables”. Also, the fields that each subroutine can or cannot be used are determined.
“How to use in example step by step?”
In this section, all steps that must be done in Abaqus/CAE to define a user amplitude are presented. One of the most useful features of the user amplitude subroutine is the “Sensor”. Defining a sensor in Abaqus to use in user amplitude subroutines has some key points, for example:
- Sensors can only be defined for nodal, connector elements, and some whole surface contact output variables.
- Sensors are named entities that are intended to be used to model physical sensors.
- A sensor must be uniquely associated with a particular scalar output variable.
The sensor definition procedure is completely explained in this section.
“Workshop 1: Ramp Amplitude in UAMP Subroutine “
In this workshop, the model consists of two identical trusses which are encastered at one end, and the displacement load is exerted at the other end. A common amplitude curve called “Ramp” amplitude is applied to the loads. This amplitude is defined in two different ways. In the first way, it is defined via Abaqus pre-defined amplitudes, and in the second way, it is defined via Abaqus user amplitude which in this example UAMP subroutine used. One truss is exerted by the load with Abaqus pre-defined amplitude and the other truss is exerted by the load with user amplitude. To verify the UAMP subroutine written for the ramp amplitude, in both ways, we must achieve the same results. So, in this workshop, the UAMP subroutine is explained and its verification through an example is also investigated.
“Workshop 2: UAMP Subroutine using Sensors “
In this workshop, a UAMP subroutine is written using several sensor values defined in the model. The model is the same as before consisting of two identical trusses that are encastered at one end, and the displacement load is exerted at the other end. Instead of using an analytical function to define an amplitude, we defined several sensors in the model. Each sensor measures a special parameter such as displacement, velocity, acceleration, and reaction force in the model during analysis. An amplitude using all of these sensor values in the form of a UAMP subroutine is created and applied to the model. The sensor definition in Abaqus/CAE and achieving sensor values in the subroutine is completely declared in this example.
“Workshop 3: VUAMP Subroutine using Sensors “
In this workshop, the model is the same as the previous workshop and the difference is that we want to use the VUAMP subroutine instead. In the third section of this package, we talked about the differences between UAMP and VUAMP subroutines. The process of converting a UAMP to a VUAMP subroutine and all the steps needed to be done in Abaqus/CAE for this purpose are explained in this workshop.
It would be helpful to see Abaqus Documentation to understand how it would be hard to start an Abaqus simulation without any Abaqus tutorial. Also, you can read this article about UAMP Abaqus subroutine.
The Abaqus user subroutine allows the program to be customized for particular applications unavailable through the main Abaqus facilities. You should write a user subroutine if you could not run your analysis by ABAQUS built-in models for materials, loads, properties, elements, etc., for example, if you need to model a user-defined nonlinear stress-strain relation, which is not provided by Abaqus, then look for UMAT user subroutine. A simpler subroutine is UAMP, which allows the creation of user-defined amplitude. If it is your first time writing a subroutine like UAMP, please read the Start Writing an Abaqus Subroutine: Basics & Recommendations article. After reading this post and watching this tutorial’s demo video, you will definitely decide to save time in Abaqus modelling and get this UAMP training package. If you have questions, ask here on our live chat on the left side of this page.
Basic steps to write a subroutine:
Generally, to write a newly developed UAMP, you should follow these steps:
1. Knowing well the material model theory for our UAMP
2. Getting Familiar with UAMP parameters (Inputs/Outputs)
3. Developing FORTRAN code of the UAMP in Abaqus
4. Implementation in Abaqus & Compilation
5. Testing and debugging UAMP subroutine
6. Examining UAMP results and verification
Reviews
There are no reviews yet