'Error while executing a c++ umat in Abaqus
This is a simple Linear elastic umat written in c++.When i try to run a abaqus job for a simple model using the below code, Abaqus give me the following error
"Problem during linking - Abaqus/Standard User Subroutines. This error may be due to a mismatch in the Abaqus user subroutine arguments. These arguments sometimes change from release to release, so user subroutines used with a previous release of Abaqus may need to be adjusted."
extern "C" void umat_(double *stress, double *statev, double *ddsdde, double *sse, double *spd,
double *scd, double *rpl, double *ddsddt, double *drplde, double *drpldt, double *stran,
double *dstran, double *time, double *dtime, double *temp, double *dtemp, double *predef,
double *dpred, char *cmname, int *ndi, int *nshr, int *ntens, int *nstatv, double *props, int *nprops,
double *coords, double *drot, double *pnewdt, double *celent, double *dfgrd0,
double *dfgrd1, int *noel, int *npt, int *layer, int *kspt, int *jstep, int *kinc)
{
double E = props[0]; //210000
double NU = props[1]; //0.3
double G = E/2.0/(1.0 + NU); //80769,23
double LAMBDA = 2.0*G*NU/(1.0 - 2.0*NU);//121153,85
double eps [6];
double eps_trace;
// Update strain
for (int i = 0; i < 6; i++)
{
eps[i] = stran[i] + dstran[i];
}
eps_trace = eps[0] + eps[1] + eps[2];
//Calculation of the stress
for(int i = 0; i < 3; i++)
{
stress[i] = LAMBDA*eps_trace + 2.0*G*eps[i];
stress[i+3] = G*eps[i+3];
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|