submodules allow inter-module communication
This commit is contained in:
parent
f5292019e5
commit
e52a747774
|
@ -4,6 +4,7 @@
|
||||||
!> @brief elasticity, plasticity, internal microstructure state
|
!> @brief elasticity, plasticity, internal microstructure state
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module constitutive
|
module constitutive
|
||||||
|
use prec
|
||||||
use math
|
use math
|
||||||
use debug
|
use debug
|
||||||
use numerics
|
use numerics
|
||||||
|
@ -14,9 +15,6 @@ module constitutive
|
||||||
use HDF5_utilities
|
use HDF5_utilities
|
||||||
use lattice
|
use lattice
|
||||||
use discretization
|
use discretization
|
||||||
use plastic_none
|
|
||||||
use plastic_isotropic
|
|
||||||
use plastic_phenopowerlaw
|
|
||||||
use plastic_kinehardening
|
use plastic_kinehardening
|
||||||
use plastic_dislotwin
|
use plastic_dislotwin
|
||||||
use plastic_disloucla
|
use plastic_disloucla
|
||||||
|
@ -40,6 +38,89 @@ module constitutive
|
||||||
constitutive_source_maxSizePostResults, &
|
constitutive_source_maxSizePostResults, &
|
||||||
constitutive_source_maxSizeDotState
|
constitutive_source_maxSizeDotState
|
||||||
|
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
module subroutine plastic_none_init
|
||||||
|
end subroutine plastic_none_init
|
||||||
|
|
||||||
|
module subroutine plastic_isotropic_init
|
||||||
|
end subroutine plastic_isotropic_init
|
||||||
|
|
||||||
|
module subroutine plastic_phenopowerlaw_init
|
||||||
|
end subroutine plastic_phenopowerlaw_init
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
|
Lp !< plastic velocity gradient
|
||||||
|
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||||
|
dLp_dMp !< derivative of Lp with respect to the Mandel stress
|
||||||
|
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mp !< Mandel stress
|
||||||
|
integer, intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
end subroutine plastic_isotropic_LpAndItsTangent
|
||||||
|
|
||||||
|
pure module subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
|
Lp !< plastic velocity gradient
|
||||||
|
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||||
|
dLp_dMp !< derivative of Lp with respect to the Mandel stress
|
||||||
|
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mp !< Mandel stress
|
||||||
|
integer, intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of)
|
||||||
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
|
Li !< inleastic velocity gradient
|
||||||
|
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||||
|
dLi_dMi !< derivative of Li with respect to Mandel stress
|
||||||
|
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mi !< Mandel stress
|
||||||
|
integer, intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
end subroutine plastic_isotropic_LiAndItsTangent
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine plastic_isotropic_dotState(Mp,instance,of)
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mp !< Mandel stress
|
||||||
|
integer, intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
end subroutine plastic_isotropic_dotState
|
||||||
|
|
||||||
|
module subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mp !< Mandel stress
|
||||||
|
integer, intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
end subroutine plastic_phenopowerlaw_dotState
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine plastic_isotropic_results(instance,group)
|
||||||
|
integer, intent(in) :: instance
|
||||||
|
character(len=*), intent(in) :: group
|
||||||
|
end subroutine plastic_isotropic_results
|
||||||
|
|
||||||
|
module subroutine plastic_phenopowerlaw_results(instance,group)
|
||||||
|
integer, intent(in) :: instance
|
||||||
|
character(len=*), intent(in) :: group
|
||||||
|
end subroutine plastic_phenopowerlaw_results
|
||||||
|
|
||||||
|
end interface
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
constitutive_init, &
|
constitutive_init, &
|
||||||
constitutive_homogenizedC, &
|
constitutive_homogenizedC, &
|
||||||
|
|
|
@ -7,18 +7,7 @@
|
||||||
!! resolving the stress on the slip systems. Will give the response of phenopowerlaw for an
|
!! resolving the stress on the slip systems. Will give the response of phenopowerlaw for an
|
||||||
!! untextured polycrystal
|
!! untextured polycrystal
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module plastic_isotropic
|
submodule(constitutive) plastic_isotropic
|
||||||
use prec
|
|
||||||
use debug
|
|
||||||
use math
|
|
||||||
use IO
|
|
||||||
use material
|
|
||||||
use config
|
|
||||||
use discretization
|
|
||||||
use results
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
private
|
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
enumerator :: &
|
enumerator :: &
|
||||||
|
@ -64,20 +53,13 @@ module plastic_isotropic
|
||||||
dotState, &
|
dotState, &
|
||||||
state
|
state
|
||||||
|
|
||||||
public :: &
|
|
||||||
plastic_isotropic_init, &
|
|
||||||
plastic_isotropic_LpAndItsTangent, &
|
|
||||||
plastic_isotropic_LiAndItsTangent, &
|
|
||||||
plastic_isotropic_dotState, &
|
|
||||||
plastic_isotropic_results
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief module initialization
|
!> @brief module initialization
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_init
|
module subroutine plastic_isotropic_init
|
||||||
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
|
@ -210,7 +192,7 @@ end subroutine plastic_isotropic_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
module subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
|
@ -271,7 +253,7 @@ end subroutine plastic_isotropic_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of)
|
module subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of)
|
||||||
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Li !< inleastic velocity gradient
|
Li !< inleastic velocity gradient
|
||||||
|
@ -323,7 +305,7 @@ subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief calculates the rate of change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_dotState(Mp,instance,of)
|
module subroutine plastic_isotropic_dotState(Mp,instance,of)
|
||||||
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
|
@ -372,7 +354,7 @@ end subroutine plastic_isotropic_dotState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief writes results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_isotropic_results(instance,group)
|
module subroutine plastic_isotropic_results(instance,group)
|
||||||
#if defined(PETSc) || defined(DAMASK_HDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
|
|
||||||
integer, intent(in) :: instance
|
integer, intent(in) :: instance
|
||||||
|
@ -396,4 +378,4 @@ subroutine plastic_isotropic_results(instance,group)
|
||||||
end subroutine plastic_isotropic_results
|
end subroutine plastic_isotropic_results
|
||||||
|
|
||||||
|
|
||||||
end module plastic_isotropic
|
end submodule plastic_isotropic
|
||||||
|
|
|
@ -4,16 +4,7 @@
|
||||||
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief Dummy plasticity for purely elastic material
|
!> @brief Dummy plasticity for purely elastic material
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module plastic_none
|
submodule(constitutive) plastic_none
|
||||||
use material
|
|
||||||
use discretization
|
|
||||||
use debug
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
private
|
|
||||||
|
|
||||||
public :: &
|
|
||||||
plastic_none_init
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -21,7 +12,7 @@ contains
|
||||||
!> @brief module initialization
|
!> @brief module initialization
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_none_init
|
module subroutine plastic_none_init
|
||||||
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
|
@ -44,4 +35,4 @@ subroutine plastic_none_init
|
||||||
|
|
||||||
end subroutine plastic_none_init
|
end subroutine plastic_none_init
|
||||||
|
|
||||||
end module plastic_none
|
end submodule plastic_none
|
||||||
|
|
|
@ -4,19 +4,7 @@
|
||||||
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief phenomenological crystal plasticity formulation using a powerlaw fitting
|
!> @brief phenomenological crystal plasticity formulation using a powerlaw fitting
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module plastic_phenopowerlaw
|
submodule(constitutive) plastic_phenopowerlaw
|
||||||
use prec
|
|
||||||
use debug
|
|
||||||
use math
|
|
||||||
use IO
|
|
||||||
use material
|
|
||||||
use config
|
|
||||||
use lattice
|
|
||||||
use discretization
|
|
||||||
use results
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
private
|
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
enumerator :: &
|
enumerator :: &
|
||||||
|
@ -91,12 +79,6 @@ module plastic_phenopowerlaw
|
||||||
dotState, &
|
dotState, &
|
||||||
state
|
state
|
||||||
|
|
||||||
public :: &
|
|
||||||
plastic_phenopowerlaw_init, &
|
|
||||||
plastic_phenopowerlaw_LpAndItsTangent, &
|
|
||||||
plastic_phenopowerlaw_dotState, &
|
|
||||||
plastic_phenopowerlaw_results
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,7 +86,7 @@ contains
|
||||||
!> @brief module initialization
|
!> @brief module initialization
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_init
|
module subroutine plastic_phenopowerlaw_init
|
||||||
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
|
@ -356,7 +338,7 @@ end subroutine plastic_phenopowerlaw_init
|
||||||
!> @details asummes that deformation by dislocation glide affects twinned and untwinned volume
|
!> @details asummes that deformation by dislocation glide affects twinned and untwinned volume
|
||||||
! equally (Taylor assumption). Twinning happens only in untwinned volume
|
! equally (Taylor assumption). Twinning happens only in untwinned volume
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
pure module subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
|
@ -407,7 +389,7 @@ end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief calculates the rate of change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
module subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||||
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
|
@ -463,7 +445,7 @@ end subroutine plastic_phenopowerlaw_dotState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief writes results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_results(instance,group)
|
module subroutine plastic_phenopowerlaw_results(instance,group)
|
||||||
#if defined(PETSc) || defined(DAMASK_HDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
|
|
||||||
integer, intent(in) :: instance
|
integer, intent(in) :: instance
|
||||||
|
@ -622,4 +604,4 @@ pure subroutine kinetics_twin(Mp,instance,of,&
|
||||||
|
|
||||||
end subroutine kinetics_twin
|
end subroutine kinetics_twin
|
||||||
|
|
||||||
end module plastic_phenopowerlaw
|
end submodule plastic_phenopowerlaw
|
||||||
|
|
Loading…
Reference in New Issue