FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
uelastic.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
7 module muelastic
8  implicit none
9 contains
10 
12  subroutine uelasticmatrix( matl, strain, D )
13  use hecmw
14  real(kind=kreal), intent(in) :: matl(:)
15  real(kind=kreal), intent(in) :: strain(6)
16  real(kind=kreal), intent(out) :: d(6,6)
17 
18  ! following examples of linear elasticicty
19  real(kind=kreal) :: ee, pp
20 
21  d(:,:)=0.d0
22 
23  ee = matl(1)
24  pp = matl(2)
25  d(1,1)=ee*(1.d0-pp)/(1.d0-2.d0*pp)/(1.d0+pp)
26  d(1,2)=ee*pp/(1.d0-2.d0*pp)/(1.d0+pp)
27  d(1,3)=d(1,2)
28  d(2,1)=d(1,2)
29  d(2,2)=d(1,1)
30  d(2,3)=d(1,2)
31  d(3,1)=d(1,3)
32  d(3,2)=d(2,3)
33  d(3,3)=d(1,1)
34  d(4,4)=ee/(1.d0+pp)*0.5d0
35  d(5,5)=ee/(1.d0+pp)*0.5d0
36  d(6,6)=ee/(1.d0+pp)*0.5d0
37  end subroutine
38 
40  subroutine uelasticupdate( matl, strain, stress )
41  use hecmw
42  real(kind=kreal), intent(in) :: matl(:)
43  real(kind=kreal), intent(in) :: strain(6)
44  real(kind=kreal), intent(out) :: stress(6)
45 
46  ! following examples of linear elasticicty
47  real(kind=kreal) :: d(6,6)
48  call uelasticmatrix( matl(:), strain, d )
49  stress = matmul( d, strain )
50  end subroutine
51 
52 end module
53 
muelastic
This module provides interface for elastic or hyperelastic calculation.
Definition: uelastic.f90:7
muelastic::uelasticmatrix
subroutine uelasticmatrix(matl, strain, D)
This subroutine calculates constitutive relation.
Definition: uelastic.f90:13
muelastic::uelasticupdate
subroutine uelasticupdate(matl, strain, stress)
This subroutine calculate updated strain and stress.
Definition: uelastic.f90:41
hecmw
Definition: hecmw.f90:6