doxygen comments

This commit is contained in:
Martin Diehl 2013-02-21 23:08:36 +00:00
parent 1f86e098ba
commit 42b96354db
1 changed files with 2259 additions and 2321 deletions

View File

@ -16,106 +16,111 @@
! You should have received a copy of the GNU General Public License ! You should have received a copy of the GNU General Public License
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>. ! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
! !
!############################################################## !--------------------------------------------------------------------------------------------------
!* $Id$ ! $Id$
!*************************************** !--------------------------------------------------------------------------------------------------
!* Module: CRYSTALLITE * !> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
!*************************************** !> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
!* contains: * !> @author Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
!* - _init * !> @brief crystallite state integration functions and reporting of results
!* - materialpoint_stressAndItsTangent * !--------------------------------------------------------------------------------------------------
!* - _partitionDeformation *
!* - _updateState *
!* - _stressAndItsTangent *
!* - _postResults *
!***************************************
module crystallite module crystallite
use prec, only: pReal, pInt use prec, only: pReal, pInt
implicit none implicit none
private :: crystallite_integrateStateFPI, & private
crystallite_integrateStateEuler, & character(len=64), dimension(:,:), allocatable, private :: &
crystallite_integrateStateAdaptiveEuler, & crystallite_output !< name of each post result output
crystallite_integrateStateRK4, & integer(pInt), public, protected :: &
crystallite_integrateStateRKCK45, & crystallite_maxSizePostResults
crystallite_integrateStress, & integer(pInt), dimension(:), allocatable, public, protected :: &
crystallite_stateJump crystallite_sizePostResults
external :: dgesv integer(pInt), dimension(:,:), allocatable, private :: &
crystallite_sizePostResult
! **************************************************************** integer(pInt), dimension(:,:,:), allocatable, private :: &
! *** General variables for the crystallite calculation ***
! ****************************************************************
integer(pInt) crystallite_maxSizePostResults
integer(pInt), dimension(:), allocatable :: crystallite_sizePostResults
integer(pInt), dimension(:,:), allocatable :: crystallite_sizePostResult
character(len=64), dimension(:,:), allocatable :: crystallite_output !< name of each post result output
integer(pInt), dimension (:,:,:), allocatable :: &
crystallite_symmetryID !< crystallographic symmetry 1=cubic 2=hexagonal, needed in all orientation calcs crystallite_symmetryID !< crystallographic symmetry 1=cubic 2=hexagonal, needed in all orientation calcs
real(pReal), dimension (:,:,:), allocatable :: & real(pReal), dimension (:,:,:), allocatable, public :: &
crystallite_dt, & !< requested time increment of each grain crystallite_dt, & !< requested time increment of each grain
crystallite_Temperature, & !< Temp of each grain
crystallite_partionedTemperature0 !< Temp of each grain at start of homog inc
real(pReal), dimension (:,:,:), allocatable, private :: &
crystallite_subdt, & !< substepped time increment of each grain crystallite_subdt, & !< substepped time increment of each grain
crystallite_subFrac, & !< already calculated fraction of increment crystallite_subFrac, & !< already calculated fraction of increment
crystallite_subStep, & !< size of next integration step crystallite_subStep, & !< size of next integration step
crystallite_Temperature, & !< Temp of each grain
crystallite_partionedTemperature0, & !< Temp of each grain at start of homog inc
crystallite_subTemperature0, & !< Temp of each grain at start of crystallite inc crystallite_subTemperature0, & !< Temp of each grain at start of crystallite inc
crystallite_dotTemperature !< evolution of Temperature of each grain crystallite_dotTemperature !< evolution of Temperature of each grain
real(pReal), dimension (:,:,:,:), allocatable :: & real(pReal), dimension (:,:,:,:), allocatable, public :: &
crystallite_Tstar_v, & !< current 2nd Piola-Kirchhoff stress vector (end of converged time step) crystallite_Tstar_v, & !< current 2nd Piola-Kirchhoff stress vector (end of converged time step)
crystallite_Tstar0_v, & !< 2nd Piola-Kirchhoff stress vector at start of FE inc crystallite_Tstar0_v, & !< 2nd Piola-Kirchhoff stress vector at start of FE inc
crystallite_partionedTstar0_v, & !< 2nd Piola-Kirchhoff stress vector at start of homog inc crystallite_partionedTstar0_v !< 2nd Piola-Kirchhoff stress vector at start of homog inc
real(pReal), dimension (:,:,:,:), allocatable, private :: &
crystallite_subTstar0_v, & !< 2nd Piola-Kirchhoff stress vector at start of crystallite inc crystallite_subTstar0_v, & !< 2nd Piola-Kirchhoff stress vector at start of crystallite inc
crystallite_orientation, & !< orientation as quaternion crystallite_orientation, & !< orientation as quaternion
crystallite_orientation0, & !< initial orientation as quaternion crystallite_orientation0, & !< initial orientation as quaternion
crystallite_rotation !< grain rotation away from initial orientation as axis-angle (in degrees) in crystal reference frame crystallite_rotation !< grain rotation away from initial orientation as axis-angle (in degrees) in crystal reference frame
real(pReal), dimension (:,:,:,:,:), allocatable :: & real(pReal), dimension (:,:,:,:,:), allocatable, public :: &
crystallite_Fe, & !< current "elastic" def grad (end of converged time step)
crystallite_subFe0,& !< "elastic" def grad at start of crystallite inc
crystallite_Fp, & !< current plastic def grad (end of converged time step) crystallite_Fp, & !< current plastic def grad (end of converged time step)
crystallite_invFp, & !< inverse of current plastic def grad (end of converged time step)
crystallite_Fp0, & !< plastic def grad at start of FE inc crystallite_Fp0, & !< plastic def grad at start of FE inc
crystallite_partionedFp0,& !< plastic def grad at start of homog inc crystallite_partionedFp0,& !< plastic def grad at start of homog inc
crystallite_subFp0,& !< plastic def grad at start of crystallite inc
crystallite_F0, & !< def grad at start of FE inc crystallite_F0, & !< def grad at start of FE inc
crystallite_partionedF, & !< def grad to be reached at end of homog inc crystallite_partionedF, & !< def grad to be reached at end of homog inc
crystallite_partionedF0, & !< def grad at start of homog inc crystallite_partionedF0, & !< def grad at start of homog inc
crystallite_subF, & !< def grad to be reached at end of crystallite inc
crystallite_subF0, & !< def grad at start of crystallite inc
crystallite_Lp, & !< current plastic velocitiy grad (end of converged time step) crystallite_Lp, & !< current plastic velocitiy grad (end of converged time step)
crystallite_Lp0, & !< plastic velocitiy grad at start of FE inc crystallite_Lp0, & !< plastic velocitiy grad at start of FE inc
crystallite_partionedLp0,& !< plastic velocity grad at start of homog inc crystallite_partionedLp0,& !< plastic velocity grad at start of homog inc
crystallite_P !< 1st Piola-Kirchhoff stress per grain
real(pReal), dimension (:,:,:,:,:), allocatable, private :: &
crystallite_Fe, & !< current "elastic" def grad (end of converged time step)
crystallite_subFe0,& !< "elastic" def grad at start of crystallite inc
crystallite_invFp, & !< inverse of current plastic def grad (end of converged time step)
crystallite_subFp0,& !< plastic def grad at start of crystallite inc
crystallite_subF, & !< def grad to be reached at end of crystallite inc
crystallite_subF0, & !< def grad at start of crystallite inc
crystallite_subLp0,& !< plastic velocity grad at start of crystallite inc crystallite_subLp0,& !< plastic velocity grad at start of crystallite inc
crystallite_P, & !< 1st Piola-Kirchhoff stress per grain
crystallite_disorientation !< disorientation between two neighboring ips (only calculated for single grain IPs) crystallite_disorientation !< disorientation between two neighboring ips (only calculated for single grain IPs)
real(pReal), dimension (:,:,:,:,:,:,:), allocatable :: & real(pReal), dimension (:,:,:,:,:,:,:), allocatable, public :: &
crystallite_dPdF, & !< current individual dPdF per grain (end of converged time step) crystallite_dPdF, & !< current individual dPdF per grain (end of converged time step)
crystallite_dPdF0, & !< individual dPdF per grain at start of FE inc crystallite_dPdF0, & !< individual dPdF per grain at start of FE inc
crystallite_partioneddPdF0, & !< individual dPdF per grain at start of homog inc crystallite_partioneddPdF0 !< individual dPdF per grain at start of homog inc
real(pReal), dimension (:,:,:,:,:,:,:), allocatable, private :: &
crystallite_fallbackdPdF !< dPdF fallback for non-converged grains (elastic prediction) crystallite_fallbackdPdF !< dPdF fallback for non-converged grains (elastic prediction)
logical, dimension (:,:,:), allocatable :: & logical, dimension (:,:,:), allocatable, public :: &
crystallite_localPlasticity, & !< indicates this grain to have purely local constitutive law crystallite_requested !< flag to request crystallite calculation
crystallite_requested, & !< flag to request crystallite calculation logical, dimension (:,:,:), allocatable, public, protected :: &
crystallite_todo, & !< flag to indicate need for further computation
crystallite_converged !< convergence flag crystallite_converged !< convergence flag
logical, dimension (:,:), allocatable :: & logical, dimension (:,:,:), allocatable, private :: &
crystallite_localPlasticity, & !< indicates this grain to have purely local constitutive law
crystallite_todo !< flag to indicate need for further computation
logical, dimension (:,:), allocatable, private :: &
crystallite_clearToWindForward, & crystallite_clearToWindForward, &
crystallite_clearToCutback, & crystallite_clearToCutback, &
crystallite_syncSubFrac, & crystallite_syncSubFrac, &
crystallite_syncSubFracCompleted, & crystallite_syncSubFracCompleted, &
crystallite_neighborEnforcedCutback crystallite_neighborEnforcedCutback
public :: &
crystallite_init, &
crystallite_stressAndItsTangent, &
crystallite_orientations, &
crystallite_postResults
private :: &
crystallite_integrateStateFPI, &
crystallite_integrateStateEuler, &
crystallite_integrateStateAdaptiveEuler, &
crystallite_integrateStateRK4, &
crystallite_integrateStateRKCK45, &
crystallite_integrateStress, &
crystallite_stateJump
contains contains
!******************************************************************** !--------------------------------------------------------------------------------------------------
! allocate and initialize per grain variables !> @brief allocates and initialize per grain variables
!******************************************************************** !--------------------------------------------------------------------------------------------------
subroutine crystallite_init(Temperature) subroutine crystallite_init(Temperature)
!*** variables and functions from other modules ***!
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment) use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
use debug, only: debug_info, & use debug, only: debug_info, &
debug_reset, & debug_reset, &
@ -149,12 +154,10 @@ subroutine crystallite_init(Temperature)
constitutive_nonlocal_structureName constitutive_nonlocal_structureName
implicit none implicit none
real(pReal), intent(in) :: Temperature
integer(pInt), parameter :: myFile = 200_pInt, & integer(pInt), parameter :: myFile = 200_pInt, &
maxNchunks = 2_pInt maxNchunks = 2_pInt
!*** input variables ***!
real(pReal) Temperature
!*** local variables ***! !*** local variables ***!
integer(pInt), dimension(1+2*maxNchunks) :: positions integer(pInt), dimension(1+2*maxNchunks) :: positions
integer(pInt) g, & ! grain number integer(pInt) g, & ! grain number
@ -175,13 +178,9 @@ subroutine crystallite_init(Temperature)
character(len=64) tag character(len=64) tag
character(len=1024) line character(len=1024) line
write(6,'(/,a)') ' <<<+- crystallite init -+>>>'
!$OMP CRITICAL (write2out) write(6,'(a)') ' $Id$'
write(6,*)
write(6,*) '<<<+- crystallite init -+>>>'
write(6,*) '$Id$'
#include "compilation_info.f90" #include "compilation_info.f90"
!$OMP END CRITICAL (write2out)
gMax = homogenization_maxNgrains gMax = homogenization_maxNgrains
@ -384,9 +383,8 @@ crystallite_orientation0 = crystallite_orientation ! Store initial o
call crystallite_stressAndItsTangent(.true.,.false.) ! request elastic answers call crystallite_stressAndItsTangent(.true.,.false.) ! request elastic answers
crystallite_fallbackdPdF = crystallite_dPdF ! use initial elastic stiffness as fallback crystallite_fallbackdPdF = crystallite_dPdF ! use initial elastic stiffness as fallback
! *** Output to MARC output file *** ! *** Output ***
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
!$OMP CRITICAL (write2out)
write(6,'(a35,1x,7(i8,1x))') 'crystallite_Temperature: ', shape(crystallite_Temperature) write(6,'(a35,1x,7(i8,1x))') 'crystallite_Temperature: ', shape(crystallite_Temperature)
write(6,'(a35,1x,7(i8,1x))') 'crystallite_dotTemperature: ', shape(crystallite_dotTemperature) write(6,'(a35,1x,7(i8,1x))') 'crystallite_dotTemperature: ', shape(crystallite_dotTemperature)
write(6,'(a35,1x,7(i8,1x))') 'crystallite_Fe: ', shape(crystallite_Fe) write(6,'(a35,1x,7(i8,1x))') 'crystallite_Fe: ', shape(crystallite_Fe)
@ -433,7 +431,6 @@ if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) then
write(6,*) write(6,*)
write(6,*) 'Number of nonlocal grains: ',count(.not. crystallite_localPlasticity) write(6,*) 'Number of nonlocal grains: ',count(.not. crystallite_localPlasticity)
flush(6) flush(6)
!$OMP END CRITICAL (write2out)
endif endif
call debug_info call debug_info
@ -442,13 +439,10 @@ endif
end subroutine crystallite_init end subroutine crystallite_init
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief calculate stress (P) and tangent (dPdF) for crystallites
! calculate stress (P) and tangent (dPdF) for crystallites !--------------------------------------------------------------------------------------------------
!********************************************************************
subroutine crystallite_stressAndItsTangent(updateJaco,rate_sensitivity) subroutine crystallite_stressAndItsTangent(updateJaco,rate_sensitivity)
!*** variables and functions from other modules ***!
use numerics, only: subStepMinCryst, & use numerics, only: subStepMinCryst, &
subStepSizeCryst, & subStepSizeCryst, &
stepIncreaseCryst, & stepIncreaseCryst, &
@ -502,9 +496,7 @@ use constitutive, only: constitutive_sizeState, &
implicit none implicit none
!*** input variables ***!
logical, intent(in) :: updateJaco, rate_sensitivity ! flag indicating wehther we want to update the Jacobian (stiffness) or not logical, intent(in) :: updateJaco, rate_sensitivity ! flag indicating wehther we want to update the Jacobian (stiffness) or not
!*** local variables ***!
real(pReal) myPert, & ! perturbation with correct sign real(pReal) myPert, & ! perturbation with correct sign
formerSubStep, & formerSubStep, &
subFracIntermediate subFracIntermediate
@ -1237,14 +1229,10 @@ endif
end subroutine crystallite_stressAndItsTangent end subroutine crystallite_stressAndItsTangent
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief integrate stress, state and Temperature with 4th order explicit Runge Kutta method
! integrate stress, state and Temperature with !--------------------------------------------------------------------------------------------------
! 4h order explicit Runge Kutta method
!********************************************************************
subroutine crystallite_integrateStateRK4(gg,ii,ee) subroutine crystallite_integrateStateRK4(gg,ii,ee)
!*** variables and functions from other modules ***!
use prec, only: pInt, & use prec, only: pInt, &
pReal pReal
use numerics, only: numerics_integrationMode use numerics, only: numerics_integrationMode
@ -1512,15 +1500,11 @@ endif
end subroutine crystallite_integrateStateRK4 end subroutine crystallite_integrateStateRK4
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief integrate stress, state and Temperature with 5th order Runge-Kutta Cash-Karp method with
! integrate stress, state and Temperature with !> adaptive step size (use 5th order solution to advance = "local extrapolation")
! 5th order Runge-Kutta Cash-Karp method with adaptive step size !--------------------------------------------------------------------------------------------------
! (use 5th order solution to advance = "local extrapolation")
!********************************************************************
subroutine crystallite_integrateStateRKCK45(gg,ii,ee) subroutine crystallite_integrateStateRKCK45(gg,ii,ee)
!*** variables and functions from other modules ***!
use debug, only: debug_level, & use debug, only: debug_level, &
debug_crystallite, & debug_crystallite, &
debug_levelBasic, & debug_levelBasic, &
@ -2035,14 +2019,10 @@ endif
end subroutine crystallite_integrateStateRKCK45 end subroutine crystallite_integrateStateRKCK45
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief integrate stress, state and Temperature with 1st order Euler method with adaptive step size
! integrate stress, state and Temperature with !--------------------------------------------------------------------------------------------------
! 1nd order Euler method with adaptive step size
!********************************************************************
subroutine crystallite_integrateStateAdaptiveEuler(gg,ii,ee) subroutine crystallite_integrateStateAdaptiveEuler(gg,ii,ee)
!*** variables and functions from other modules ***!
use debug, only: debug_level, & use debug, only: debug_level, &
debug_crystallite, & debug_crystallite, &
debug_levelBasic, & debug_levelBasic, &
@ -2074,7 +2054,6 @@ use constitutive, only: constitutive_sizeDotState, &
implicit none implicit none
!*** input variables ***! !*** input variables ***!
integer(pInt), optional, intent(in):: ee, & ! element index integer(pInt), optional, intent(in):: ee, & ! element index
ii, & ! integration point index ii, & ! integration point index
@ -2355,14 +2334,10 @@ endif
end subroutine crystallite_integrateStateAdaptiveEuler end subroutine crystallite_integrateStateAdaptiveEuler
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief integrate stress, state and Temperature with 1st order explicit Euler method
! integrate stress, state and Temperature with !--------------------------------------------------------------------------------------------------
! 1st order explicit Euler method
!********************************************************************
subroutine crystallite_integrateStateEuler(gg,ii,ee) subroutine crystallite_integrateStateEuler(gg,ii,ee)
!*** variables and functions from other modules ***!
use numerics, only: numerics_integrationMode, & use numerics, only: numerics_integrationMode, &
numerics_timeSyncing numerics_timeSyncing
use debug, only: debug_level, & use debug, only: debug_level, &
@ -2563,15 +2538,11 @@ endif
end subroutine crystallite_integrateStateEuler end subroutine crystallite_integrateStateEuler
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief integrate stress, state and Temperature with adaptive 1st order explicit Euler method
! integrate stress, state and Temperature with !> using Fixed Point Iteration to adapt the stepsize
! adaptive 1st order explicit Euler method !--------------------------------------------------------------------------------------------------
! using Fixed Point Iteration to adapt the stepsize
!********************************************************************
subroutine crystallite_integrateStateFPI(gg,ii,ee) subroutine crystallite_integrateStateFPI(gg,ii,ee)
!*** variables and functions from other modules ***!
use debug, only: debug_e, & use debug, only: debug_e, &
debug_i, & debug_i, &
debug_g, & debug_g, &
@ -2603,14 +2574,10 @@ use constitutive, only: constitutive_subState0, &
constitutive_aTolState constitutive_aTolState
implicit none implicit none
!*** input variables ***!
integer(pInt), optional, intent(in):: ee, & ! element index integer(pInt), optional, intent(in):: ee, & ! element index
ii, & ! integration point index ii, & ! integration point index
gg ! grain index gg ! grain index
!*** output variables ***!
!*** local variables ***! !*** local variables ***!
integer(pInt) NiterationState, & ! number of iterations in state loop integer(pInt) NiterationState, & ! number of iterations in state loop
e, & ! element index in element loop e, & ! element index in element loop
@ -2911,18 +2878,13 @@ do while (any(crystallite_todo .and. .not. crystallite_converged) .and. Niterati
enddo ! crystallite convergence loop enddo ! crystallite convergence loop
end subroutine crystallite_integrateStateFPI end subroutine crystallite_integrateStateFPI
!--------------------------------------------------------------------------------------------------
!*********************************************************** !> @brief calculates a jump in the state according to the current state and the current stress
!* calculates a jump in the state according to the current * !--------------------------------------------------------------------------------------------------
!* state and the current stress *
!***********************************************************
function crystallite_stateJump(g,i,e) function crystallite_stateJump(g,i,e)
!*** variables and functions from other modules ***!
use debug, only: debug_level, & use debug, only: debug_level, &
debug_crystallite, & debug_crystallite, &
debug_levelExtensive, & debug_levelExtensive, &
@ -2942,8 +2904,6 @@ use constitutive, only: constitutive_sizeDotState, &
constitutive_microstructure constitutive_microstructure
implicit none implicit none
!*** input variables ***!
integer(pInt), intent(in):: e, & ! element index integer(pInt), intent(in):: e, & ! element index
i, & ! integration point index i, & ! integration point index
g ! grain index g ! grain index
@ -2987,19 +2947,16 @@ end function crystallite_stateJump
!*********************************************************************** !--------------------------------------------------------------------------------------------------
!*** calculation of stress (P) with time integration *** !> @brief calculation of stress (P) with time integration based on a residuum in Lp and
!*** based on a residuum in Lp and intermediate *** !> intermediate acceleration of the Newton-Raphson correction
!*** acceleration of the Newton-Raphson correction *** !--------------------------------------------------------------------------------------------------
!***********************************************************************
function crystallite_integrateStress(& function crystallite_integrateStress(&
g,& ! grain number g,& ! grain number
i,& ! integration point number i,& ! integration point number
e,& ! element number e,& ! element number
timeFraction & timeFraction &
) )
use prec, only: pLongInt use prec, only: pLongInt
use numerics, only: nStress, & use numerics, only: nStress, &
aTol_crystalliteStress, & aTol_crystalliteStress, &
@ -3040,8 +2997,6 @@ use math, only: math_mul33x33, &
math_Plain9to33 math_Plain9to33
implicit none implicit none
!*** input variables ***!
integer(pInt), intent(in):: e, & ! element index integer(pInt), intent(in):: e, & ! element index
i, & ! integration point index i, & ! integration point index
g ! grain index g ! grain index
@ -3094,7 +3049,7 @@ integer(pLongInt) tick, &
tock, & tock, &
tickrate, & tickrate, &
maxticks maxticks
external :: dgesv
!* be pessimistic !* be pessimistic
@ -3349,14 +3304,10 @@ endif
end function crystallite_integrateStress end function crystallite_integrateStress
!--------------------------------------------------------------------------------------------------
!******************************************************************** !> @brief calculates orientations and disorientations (in case of single grain ips)
! calculates orientations and disorientations (in case of single grain ips) !--------------------------------------------------------------------------------------------------
!********************************************************************
subroutine crystallite_orientations subroutine crystallite_orientations
!*** variables and functions from other modules ***!
use math, only: math_pDecomposition, & use math, only: math_pDecomposition, &
math_RtoQ, & math_RtoQ, &
math_qDisorientation, & math_qDisorientation, &
@ -3376,12 +3327,6 @@ use constitutive_nonlocal, only: constitutive_nonlocal_structure, &
constitutive_nonlocal_updateCompatibility constitutive_nonlocal_updateCompatibility
implicit none implicit none
!*** input variables ***!
!*** output variables ***!
!*** local variables ***!
integer(pInt) e, & ! element index integer(pInt) e, & ! element index
i, & ! integration point index i, & ! integration point index
g, & ! grain index g, & ! grain index
@ -3475,17 +3420,15 @@ end subroutine crystallite_orientations
!******************************************************************** !--------------------------------------------------------------------------------------------------
! return results of particular grain !> @brief return results of particular grain
!******************************************************************** !--------------------------------------------------------------------------------------------------
function crystallite_postResults(& function crystallite_postResults(&
dt,& ! time increment dt,& ! time increment
g,& ! grain number g,& ! grain number
i,& ! integration point number i,& ! integration point number
e & ! element number e & ! element number
) )
!*** variables and functions from other modules ***!
use math, only: math_qToEuler, & use math, only: math_qToEuler, &
math_qToAxisAngle, & math_qToAxisAngle, &
math_mul33x33, & math_mul33x33, &
@ -3508,8 +3451,6 @@ function crystallite_postResults(&
constitutive_homogenizedC constitutive_homogenizedC
implicit none implicit none
!*** input variables ***!
integer(pInt), intent(in):: e, & ! element index integer(pInt), intent(in):: e, & ! element index
i, & ! integration point index i, & ! integration point index
g ! grain index g ! grain index
@ -3622,7 +3563,4 @@ function crystallite_postResults(&
end function crystallite_postResults end function crystallite_postResults
end module crystallite
END MODULE
!##############################################################