From 4bce087d3d44350aa591b9bfefd103d2e3aa446d Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 14 May 2019 11:32:25 +0200 Subject: [PATCH] separating functionality (stub only) - mesh (initialization depends on type of solver) only provides information about number of elements, IPs and writes out displacements - new module (will get setter functions for solver specific initialization) will provide information that is only used by the nonlocal model --- src/commercialFEM_fileList.f90 | 1 + src/geometry_plastic_nonlocal.f90 | 28 ++++++++++++++++++++++++++++ src/plastic_nonlocal.f90 | 11 ++++++++--- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/geometry_plastic_nonlocal.f90 diff --git a/src/commercialFEM_fileList.f90 b/src/commercialFEM_fileList.f90 index 0ae1323f0..ef3870ece 100644 --- a/src/commercialFEM_fileList.f90 +++ b/src/commercialFEM_fileList.f90 @@ -28,6 +28,7 @@ #endif #include "material.f90" #include "lattice.f90" +#include "geometry_plastic_nonlocal.f90" #include "source_thermal_dissipation.f90" #include "source_thermal_externalheat.f90" #include "source_damage_isoBrittle.f90" diff --git a/src/geometry_plastic_nonlocal.f90 b/src/geometry_plastic_nonlocal.f90 new file mode 100644 index 000000000..579004b2f --- /dev/null +++ b/src/geometry_plastic_nonlocal.f90 @@ -0,0 +1,28 @@ +!-------------------------------------------------------------------------------------------------- +!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH +!> @author Christoph Koords, Max-Planck-Institut für Eisenforschung GmbH +!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH +!> @brief Geometric information about the IP cells needed for the nonlocal +! plasticity model +!-------------------------------------------------------------------------------------------------- +module geometry_plastic_nonlocal + use prec + + implicit none + private + logical, dimension(3), public, parameter :: & + geometry_plastic_nonlocal_periodicSurface = .true. !< flag indicating periodic outer surfaces (used for fluxes) NEEDED? + + integer, dimension(:,:,:,:), allocatable, public, protected :: & + geometry_plastic_nonlocal_IPneighborhood !< 6 or less neighboring IPs as [element_num, IP_index, neighbor_index that points to me] + + real(pReal), dimension(:,:), allocatable, public, protected :: & + geometry_plastic_nonlocal_IPvolume !< volume associated with IP (initially!) + + real(pReal), dimension(:,:,:), allocatable, public, protected :: & + geometry_plastic_nonlocal_IParea !< area of interface to neighboring IP (initially!) + + real(pReal),dimension(:,:,:,:), allocatable, public, protected :: & + geometry_plastic_nonlocal_IPareaNormal !< area normal of interface to neighboring IP (initially!) + +end module geometry_plastic_nonlocal diff --git a/src/plastic_nonlocal.f90 b/src/plastic_nonlocal.f90 index 6097bbbc8..66e8f8980 100644 --- a/src/plastic_nonlocal.f90 +++ b/src/plastic_nonlocal.f90 @@ -5,10 +5,15 @@ !> @brief material subroutine for plasticity including dislocation flux !-------------------------------------------------------------------------------------------------- module plastic_nonlocal - use prec, only: & - pReal + use prec use future - + use geometry_plastic_nonlocal, only: & + periodicSurface => geometry_plastic_nonlocal_periodicSurface, & + IPneighborhood => geometry_plastic_nonlocal_IPneighborhood, & + IPvolume => geometry_plastic_nonlocal_IPvolume, & + IParea => geometry_plastic_nonlocal_IParea, & + IPareaNormal => geometry_plastic_nonlocal_IPareaNormal + implicit none private real(pReal), parameter, private :: &