Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Exponential Young's modulus

Status
Not open for further replies.

leo81

Bioengineer
Dec 6, 2007
43
0
0
BE
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
 
Replies continue below

Recommended for you

You could define the modulus as an appropriate function of a field variable, using subroutine USDFLD to calculate the field variable according to the exponential function of strain.
 
mrgoldthorpe... I am trying to understand how it works using USDFLD. But the problem is how to define the subroutine, and I did't understand the meaning of:

*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
 
** 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.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
 
Thank you very much.

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

 
In defining E in *ELASTIC, you specify that it varies linearly with the field variable. In other words, E is equal to the value of the field variable.

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.
 

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
 
Status
Not open for further replies.
Back
Top