Exponential Young's modulus
Exponential Young's modulus
(OP)
Dear All,
Do you know how to implement an exponential Young's modulus in an elastic costitutive law?
The model:
Eyoung=c1e^(c2E)
where:
Eyoung=Young's moduuls
c1=constant
c2=constant
E=strain
Thanks a lot.
Leo
Do you know how to implement an exponential Young's modulus in an elastic costitutive law?
The model:
Eyoung=c1e^(c2E)
where:
Eyoung=Young's moduuls
c1=constant
c2=constant
E=strain
Thanks a lot.
Leo





RE: Exponential Young's modulus
RE: Exponential Young's modulus
But... Is not possible by UMAT?
RE: Exponential Young's modulus
*ELASTIC, DEPENDENCIES=1
2000., 0.3, 0., 0.04
...
the last values (ex. 0.04 in the first row) in the "table of modulus values decreasing as a function of field variable 1", reported in section 1.1.43 of Abaqus User Subroutines Reference Manual V 6.8.
It is the section linked to USDFLD.
I really don't have any idea of how to implement the subroutine. Could you suggest to me examples?
Thanks for your time.
Regards,
Leo
RE: Exponential Young's modulus
** variable. Make sure you use a large enough number to cover all possible values of E you might encounter:
*ELASTIC, DEPENDENCIES=1
0.0, 0.3, 0., 0.0
10000000.0, 0.3, 0., 10000000.0
**
*USER DEFINED FIELD
*DEPVAR
1
Define USDFLD as follows:
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
C
C Define parameters C1 and C2, change values used here:
PARAMETER (C1=3.6, C2=4.8)
C
C Get the strain array:
CALL GETVRM('E',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
MATLAYO,LACCFLA)
C
C choose whatever component or scalar is required for your exponential
C function. Let's use the first component here:
EPS = ABS( ARRAY(1) )
C
C Now apply your expression for E to determine the field variable:
FIELD(1) = C1 * EXP(C2*EPS)
C
C Store as a solution dependent state variable (not really required):
STATEV(1) = FIELD(1)
C
C If error, write comment to .DAT file:
IF(JRCD.NE.0)THEN
WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ',
1 NOEL,'INTEGRATION POINT NUMBER ',NPT
ENDIF
C
RETURN
END
RE: Exponential Young's modulus
I will let you know just as soon as I will be able to try it.
Leo
Ps: butwhat exactly does it mean?:
** First define E to varying linearly with the field
** variable. Make sure you use a large enough number to cover all possible values of E you might encounter:
*ELASTIC, DEPENDENCIES=1
0.0, 0.3, 0.,0.010000000.0, 0.3, 0., 10000000.0
RE: Exponential Young's modulus
In defining the field variable in USDFLD you are of course actually working out E.
Does that make sense? I'll leave you to sort it out now.
By the way, you might find it useful to examine SDV1 and the particular value of strain you are using to work out E - say by *EL PRINT - to make sure that the values are consistent with what you expect.
RE: Exponential Young's modulus
Waiting the availability of C++ with fortran...
I tought to this solution:
INP FILE:
...
*Elastic, Dependencies=1
** Table of values
**
0.0151,0.49,0.,0.
0.016688,0.49,0.,0.01
0.018443,0.49,0.,0.02
0.020383,0.49,0.,0.03
0.022527,0.49,0.,0.04
0.024896,0.49,0.,0.05
0.027514,0.49,0.,0.06
0.030408,0.49,0.,0.07
0.033606,0.49,0.,0.08
0.03714,0.49,0.,0.09
0.041046,0.49,0.,0.1
0.045363,0.49,0.,0.11
0.050134,.49,0.,0.12
0.055406,0.49,0.,0.13
0.061234,0.49,0.,0.14
0.067674,0.49,0.,0.15
0.074791,0.49,0.,0.16
0.082657,0.49,0.,0.17
0.09135,0.49,0.,0.18
0.10096,0.49,0.,0.19
0.11157,0.49,0.,0.2
0.12331,0.49,0.,0.21
0.13628,0.49,0.,0.22
0.15061,0.49,0.,0.23
0.16645,0.49,0.,0.24
0.18396,0.49,0.,0.25
0.2033,0.49,0.,0.26
0.22468,0.49,0.,0.27
0.24831,0.49,0.,0.28
0.27443,0.49,0.,0.29
0.30329,0.49,0.,0.3
0.33519,0.49,0.,0.31
0.37044,0.49,0.,0.32
0.4094,0.49,0.,0.33
0.45246,0.49,0.,0.34
0.50004,0.49,0.,0.35
0.55263,0.49,0.,0.36
0.61075,0.49,0.,0.37
0.67499,0.49,0.,0.38
0.74598,0.49,0.,0.39
0.82443,0.49,0.,0.4
0.91114,0.49,0.,0.41
1.007,0.49,0.,0.42
1.1129,0.49,0.,0.43
1.2299,0.49,0.,0.44
1.3593,0.49,0.,0.45
1.5022,0.49,0.,0.46
1.6602,0.49,0.,0.47
1.8348,0.49,0.,0.48
2.0278,0.49,0.,0.49
2.241,0.49,0.,0.5
2.4767,0.49,0.,0.51
2.7372,0.49,0.,0.52
3.0251,0.49,0.,0.53
3.3432,0.49,0.,0.54
3.6948,0.49,0.,0.55
4.0834,0.49,0.,0.56
4.5129,0.49,0.,0.57
4.9875,0.49,0.,0.58
5.5121,0.49,0.,0.59
6.0918,0.49,0.,0.6
6.7325,0.49,0.,0.61
7.4405,0.49,0.,0.62
8.223,0.49,0.,0.63
9.0879,0.49,0.,0.64
10.044,0.49,0.,0.65
11.1,0.49,0.,0.66
12.267,0.49,0.,0.67
13.557,0.49,0.,0.68
14.983,0.49,0.,0.69
16.559,0.49,0.,0.7
18.301,0.49,0.,0.71
20.225,0.49,0.,0.72
22.353,0.49,0.,0.73
24.703,0.49,0.,0.74
27.301,0.49,0.,0.75
30.173,0.49,0.,0.76
33.346,0.49,0.,0.77
36.853,0.49,0.,0.78
40.729,0.49,0.,0.79
45.012,0.49,0.,0.8
49.746,0.49,0.,0.81
54.978,0.49,0.,0.82
60.76,0.49,0.,0.83
67.151,0.49,0.,0.84
74.213,0.49,0.,0.85
82.018,0.49,0.,0.86
90.644,0.49,0.,0.87
100.18,0.49,0.,0.88
110.71,0.49,0.,0.89
122.36,0.49,0.,0.9
135.22,0.49,0.,0.91
149.45,0.49,0.,0.92
165.16,0.49,0.,0.93
182.53,0.49,0.,0.94
201.73,0.49,0.,0.95
222.95,0.49,0.,0.96
246.4,0.49,0.,0.97
272.31,0.49,0.,0.98
300.95,0.49,0.,0.99
332.6,0.49,0.,1
*User Defined Field
*Depvar
1
...
E changes with the exponential law.
While for the .for file:
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,
3 LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),
1 COORD(*)
C
C Absolute value of current strain:
CALL GETVRM('E',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
MATLAYO,LACCFLA)
EPS = ABS( ARRAY(1) )
C
C Use the current strain as a field variable
FIELD(1) = EPS
C Store the current strain as a solution dependent state
C variable
STATEV(1) = FIELD(1)
C If error, write comment to .DAT file:
IF(JRCD.NE.0)THEN
WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ',
1 NOEL,'INTEGRATION POINT NUMBER ',NPT
ENDIF
C
RETURN
END
What is wrong in this?
Thank you very much...
Leo