DAMASK with grid solvers  Revision: v2.0.3-2204-gdb1f2151
The Düsseldorf Advanced Material Simulation Kit with Grid Solvers
geometry_plastic_nonlocal.f90
Go to the documentation of this file.
1 # 1 "/home/damask_user/GitLabCI_Pipeline_4301/DAMASK/src/geometry_plastic_nonlocal.f90"
2 # 1 "<built-in>"
3 # 1 "<command-line>"
4 # 1 "/home/damask_user/GitLabCI_Pipeline_4301/DAMASK/src/geometry_plastic_nonlocal.f90"
5 !--------------------------------------------------------------------------------------------------
10 ! plasticity model
11 !--------------------------------------------------------------------------------------------------
13  use prec
14  use results
15 
16  implicit none
17  public
18 
19  integer, protected :: &
21 
22  integer, dimension(:,:,:,:), allocatable, protected :: &
24 
25  real(preal), dimension(:,:), allocatable, protected :: &
27 
28  real(preal), dimension(:,:,:), allocatable, protected :: &
30 
31  real(preal), dimension(:,:,:,:), allocatable, protected :: &
33 
34 
35 contains
36 
37 !---------------------------------------------------------------------------------------------------
40 ! face ID (second index) gives the element ID (1 @ first index), IP ID (2 @ first index)
41 ! and face ID (3 @ first index).
42 ! A triangle (2D) has 3 faces, a quadrilateral (2D) had 4 faces, a tetrahedron (3D) has
43 ! 4 faces, and a hexahedron (3D) has 6 faces.
44 !---------------------------------------------------------------------------------------------------
45 subroutine geometry_plastic_nonlocal_setipneighborhood(IPneighborhood)
46 
47  integer, dimension(:,:,:,:), intent(in) :: IPneighborhood
48 
50  geometry_plastic_nonlocal_nipneighbors = size(ipneighborhood,2)
51 
52 
54 
55 
56 !---------------------------------------------------------------------------------------------------
58 !---------------------------------------------------------------------------------------------------
59 subroutine geometry_plastic_nonlocal_setipvolume(IPvolume)
60 
61  real(pReal), dimension(:,:), intent(in) :: IPvolume
62 
64 
66 
67 
68 !---------------------------------------------------------------------------------------------------
70 ! encompassing an integration point
71 !---------------------------------------------------------------------------------------------------
72 subroutine geometry_plastic_nonlocal_setiparea(IParea)
73 
74  real(pReal), dimension(:,:,:), intent(in) :: IParea
75 
77 
79 
80 
81 !---------------------------------------------------------------------------------------------------
83 ! encompassing an integration point
84 !---------------------------------------------------------------------------------------------------
85 subroutine geometry_plastic_nonlocal_setipareanormal(IPareaNormal)
86 
87  real(pReal), dimension(:,:,:,:), intent(in) :: IPareaNormal
88 
90 
92 
93 
94 !---------------------------------------------------------------------------------------------------
96 !---------------------------------------------------------------------------------------------------
98 
101 
102  if(allocated(geometry_plastic_nonlocal_ipvolume0)) &
104 
105  if(allocated(geometry_plastic_nonlocal_iparea0)) &
107 
110 
112 
113 
114 !---------------------------------------------------------------------------------------------------
116 !---------------------------------------------------------------------------------------------------
118 
119  integer, dimension(:), allocatable :: shp
120 
122 
123  writevolume: block
124  real(pReal), dimension(:), allocatable :: temp
126  temp = reshape(geometry_plastic_nonlocal_ipvolume0,[shp(1)*shp(2)])
127  call results_writedataset('geometry',temp,'v_0',&
128  'initial cell volume','m³')
129  end block writevolume
130 
131  writeareas: block
132  real(pReal), dimension(:,:), allocatable :: temp
134  temp = reshape(geometry_plastic_nonlocal_iparea0,[shp(1),shp(2)*shp(3)])
135  call results_writedataset('geometry',temp,'a_0',&
136  'initial cell face area','m²')
137  end block writeareas
138 
139  writenormals: block
140  real(pReal), dimension(:,:,:), allocatable :: temp
142  temp = reshape(geometry_plastic_nonlocal_ipareanormal0,[shp(1),shp(2),shp(3)*shp(4)])
143  call results_writedataset('geometry',temp,'n_0',&
144  'initial cell face normals','-',transposed=.false.)
145  end block writenormals
146 
147 
148  call results_closejobfile
149 
151 
152 end module geometry_plastic_nonlocal
geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipareanormal0
real(preal), dimension(:,:,:,:), allocatable, protected geometry_plastic_nonlocal_ipareanormal0
area normal of interface to neighboring IP (initially!)
Definition: geometry_plastic_nonlocal.f90:31
geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipneighborhood
subroutine geometry_plastic_nonlocal_setipneighborhood(IPneighborhood)
Set the integration point (IP) neighborhood.
Definition: geometry_plastic_nonlocal.f90:46
geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipvolume0
real(preal), dimension(:,:), allocatable, protected geometry_plastic_nonlocal_ipvolume0
volume associated with IP (initially!)
Definition: geometry_plastic_nonlocal.f90:25
geometry_plastic_nonlocal::geometry_plastic_nonlocal_nipneighbors
integer, protected geometry_plastic_nonlocal_nipneighbors
Definition: geometry_plastic_nonlocal.f90:19
geometry_plastic_nonlocal
Geometric information about the IP cells needed for the nonlocal.
Definition: geometry_plastic_nonlocal.f90:12
prec
setting precision for real and int type
Definition: prec.f90:13
geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipneighborhood
integer, dimension(:,:,:,:), allocatable, protected geometry_plastic_nonlocal_ipneighborhood
6 or less neighboring IPs as [element ID, IP ID, face ID that point to me]
Definition: geometry_plastic_nonlocal.f90:22
geometry_plastic_nonlocal::geometry_plastic_nonlocal_setiparea
subroutine geometry_plastic_nonlocal_setiparea(IParea)
Set the initial areas of the unit triangle/unit quadrilateral/tetrahedron/hexahedron.
Definition: geometry_plastic_nonlocal.f90:73
results::results_writedataset
Definition: results.f90:25
prec::preal
integer, parameter preal
number with 15 significant digits, up to 1e+-307 (typically 64 bit)
Definition: prec.f90:20
geometry_plastic_nonlocal::geometry_plastic_nonlocal_results
subroutine geometry_plastic_nonlocal_results
Write geometry data to results file.
Definition: geometry_plastic_nonlocal.f90:118
geometry_plastic_nonlocal::geometry_plastic_nonlocal_disable
subroutine geometry_plastic_nonlocal_disable
Free memory used by variables only needed by plastic_nonlocal.
Definition: geometry_plastic_nonlocal.f90:98
geometry_plastic_nonlocal::geometry_plastic_nonlocal_iparea0
real(preal), dimension(:,:,:), allocatable, protected geometry_plastic_nonlocal_iparea0
area of interface to neighboring IP (initially!)
Definition: geometry_plastic_nonlocal.f90:28
results::results_openjobfile
subroutine, public results_openjobfile
opens the results file to append data
Definition: results.f90:92
results
Definition: results.f90:11
geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipareanormal
subroutine geometry_plastic_nonlocal_setipareanormal(IPareaNormal)
Set the direction normal of the areas of the triangle/quadrilateral/tetrahedron/hexahedron.
Definition: geometry_plastic_nonlocal.f90:86
geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipvolume
subroutine geometry_plastic_nonlocal_setipvolume(IPvolume)
Set the initial volume associated with an integration point.
Definition: geometry_plastic_nonlocal.f90:60