2013-01-28 22:06:26 +05:30
|
|
|
!--------------------------------------------------------------------------------------------------
|
2018-11-03 21:10:17 +05:30
|
|
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
2013-01-28 22:06:26 +05:30
|
|
|
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
|
|
|
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
|
|
|
!> @brief Isostrain (full constraint Taylor assuption) homogenization scheme
|
|
|
|
!--------------------------------------------------------------------------------------------------
|
2021-02-13 23:27:41 +05:30
|
|
|
submodule(homogenization:mechanical) isostrain
|
2019-04-06 01:12:07 +05:30
|
|
|
|
2012-03-09 01:55:28 +05:30
|
|
|
contains
|
2013-01-28 22:06:26 +05:30
|
|
|
|
|
|
|
!--------------------------------------------------------------------------------------------------
|
|
|
|
!> @brief allocates all neccessary fields, reads information from material configuration file
|
|
|
|
!--------------------------------------------------------------------------------------------------
|
2021-04-06 15:35:47 +05:30
|
|
|
module subroutine isostrain_init
|
2019-05-15 02:42:32 +05:30
|
|
|
|
2019-04-06 00:18:20 +05:30
|
|
|
integer :: &
|
2021-04-11 15:48:26 +05:30
|
|
|
ho, &
|
2021-05-23 13:40:25 +05:30
|
|
|
Nmembers
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2021-11-15 23:05:44 +05:30
|
|
|
print'(/,1x,a)', '<<<+- homogenization:mechanical:isostrain init -+>>>'
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2022-02-24 16:39:47 +05:30
|
|
|
print'(/,a,i0)', ' # homogenizations: ',count(mechanical_type == MECHANICAL_ISOSTRAIN_ID)
|
2021-04-11 15:48:26 +05:30
|
|
|
flush(IO_STDOUT)
|
2021-02-23 17:47:51 +05:30
|
|
|
|
2022-02-24 16:39:47 +05:30
|
|
|
do ho = 1, size(mechanical_type)
|
|
|
|
if (mechanical_type(ho) /= MECHANICAL_ISOSTRAIN_ID) cycle
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2021-05-23 13:40:25 +05:30
|
|
|
Nmembers = count(material_homogenizationID == ho)
|
2021-04-11 15:48:26 +05:30
|
|
|
homogState(ho)%sizeState = 0
|
2021-05-23 13:40:25 +05:30
|
|
|
allocate(homogState(ho)%state0(0,Nmembers))
|
|
|
|
allocate(homogState(ho)%state (0,Nmembers))
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2021-11-15 23:05:44 +05:30
|
|
|
end do
|
2014-09-10 19:44:03 +05:30
|
|
|
|
2021-04-06 15:35:47 +05:30
|
|
|
end subroutine isostrain_init
|
2010-02-25 23:09:11 +05:30
|
|
|
|
|
|
|
|
2013-01-28 22:06:26 +05:30
|
|
|
!--------------------------------------------------------------------------------------------------
|
|
|
|
!> @brief partitions the deformation gradient onto the constituents
|
|
|
|
!--------------------------------------------------------------------------------------------------
|
2021-04-06 15:35:47 +05:30
|
|
|
module subroutine isostrain_partitionDeformation(F,avgF)
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2019-04-06 00:18:20 +05:30
|
|
|
real(pReal), dimension (:,:,:), intent(out) :: F !< partitioned deformation gradient
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2019-04-06 00:18:20 +05:30
|
|
|
real(pReal), dimension (3,3), intent(in) :: avgF !< average deformation gradient at material point
|
2020-09-13 14:09:17 +05:30
|
|
|
|
2021-04-11 15:48:26 +05:30
|
|
|
|
2019-04-06 00:18:20 +05:30
|
|
|
F = spread(avgF,3,size(F,3))
|
2013-10-11 21:31:53 +05:30
|
|
|
|
2021-04-06 15:35:47 +05:30
|
|
|
end subroutine isostrain_partitionDeformation
|
2010-02-25 23:09:11 +05:30
|
|
|
|
2021-01-26 16:11:19 +05:30
|
|
|
end submodule isostrain
|