thermal/damage constitutive (i.e. source) results are not tested
This commit is contained in:
parent
82c741d6bb
commit
acc252ea5b
|
@ -50,7 +50,6 @@ module constitutive
|
||||||
constitutive_SandItsTangents, &
|
constitutive_SandItsTangents, &
|
||||||
constitutive_collectDotState, &
|
constitutive_collectDotState, &
|
||||||
constitutive_collectDeltaState, &
|
constitutive_collectDeltaState, &
|
||||||
constitutive_postResults, &
|
|
||||||
constitutive_results
|
constitutive_results
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
@ -101,51 +100,14 @@ subroutine constitutive_init
|
||||||
if (any(phase_kinematics == KINEMATICS_slipplane_opening_ID)) call kinematics_slipplane_opening_init
|
if (any(phase_kinematics == KINEMATICS_slipplane_opening_ID)) call kinematics_slipplane_opening_init
|
||||||
if (any(phase_kinematics == KINEMATICS_thermal_expansion_ID)) call kinematics_thermal_expansion_init
|
if (any(phase_kinematics == KINEMATICS_thermal_expansion_ID)) call kinematics_thermal_expansion_init
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- constitutive init -+>>>'
|
write(6,'(/,a)') ' <<<+- constitutive init -+>>>'; flush(6)
|
||||||
|
|
||||||
mainProcess: if (worldrank == 0) then
|
mainProcess: if (worldrank == 0) then
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! write description file for constitutive output
|
! write description file for constitutive output
|
||||||
call IO_write_jobFile(FILEUNIT,'outputConstitutive')
|
call IO_write_jobFile(FILEUNIT,'outputConstitutive')
|
||||||
PhaseLoop: do ph = 1,material_Nphase
|
PhaseLoop: do ph = 1,material_Nphase
|
||||||
activePhase: if (any(material_phaseAt == ph)) then
|
if (any(material_phaseAt == ph)) write(FILEUNIT,'(/,a,/)') '['//trim(config_name_phase(ph))//']'
|
||||||
write(FILEUNIT,'(/,a,/)') '['//trim(config_name_phase(ph))//']'
|
|
||||||
|
|
||||||
SourceLoop: do s = 1, phase_Nsources(ph)
|
|
||||||
knownSource = .true. ! assume valid
|
|
||||||
sourceType: select case (phase_source(s,ph))
|
|
||||||
case (SOURCE_damage_isoBrittle_ID) sourceType
|
|
||||||
ins = source_damage_isoBrittle_instance(ph)
|
|
||||||
outputName = SOURCE_damage_isoBrittle_label
|
|
||||||
thisOutput => source_damage_isoBrittle_output
|
|
||||||
thisSize => source_damage_isoBrittle_sizePostResult
|
|
||||||
case (SOURCE_damage_isoDuctile_ID) sourceType
|
|
||||||
ins = source_damage_isoDuctile_instance(ph)
|
|
||||||
outputName = SOURCE_damage_isoDuctile_label
|
|
||||||
thisOutput => source_damage_isoDuctile_output
|
|
||||||
thisSize => source_damage_isoDuctile_sizePostResult
|
|
||||||
case (SOURCE_damage_anisoBrittle_ID) sourceType
|
|
||||||
ins = source_damage_anisoBrittle_instance(ph)
|
|
||||||
outputName = SOURCE_damage_anisoBrittle_label
|
|
||||||
thisOutput => source_damage_anisoBrittle_output
|
|
||||||
thisSize => source_damage_anisoBrittle_sizePostResult
|
|
||||||
case (SOURCE_damage_anisoDuctile_ID) sourceType
|
|
||||||
ins = source_damage_anisoDuctile_instance(ph)
|
|
||||||
outputName = SOURCE_damage_anisoDuctile_label
|
|
||||||
thisOutput => source_damage_anisoDuctile_output
|
|
||||||
thisSize => source_damage_anisoDuctile_sizePostResult
|
|
||||||
case default sourceType
|
|
||||||
knownSource = .false.
|
|
||||||
end select sourceType
|
|
||||||
if (knownSource) then
|
|
||||||
write(FILEUNIT,'(a)') '(source)'//char(9)//trim(outputName)
|
|
||||||
OutputSourceLoop: do o = 1,size(thisOutput(:,ins))
|
|
||||||
if(len_trim(thisOutput(o,ins)) > 0) &
|
|
||||||
write(FILEUNIT,'(a,i4)') trim(thisOutput(o,ins))//char(9),thisSize(o,ins)
|
|
||||||
enddo OutputSourceLoop
|
|
||||||
endif
|
|
||||||
enddo SourceLoop
|
|
||||||
endif activePhase
|
|
||||||
enddo PhaseLoop
|
enddo PhaseLoop
|
||||||
close(FILEUNIT)
|
close(FILEUNIT)
|
||||||
endif mainProcess
|
endif mainProcess
|
||||||
|
@ -169,8 +131,6 @@ subroutine constitutive_init
|
||||||
plasticState(ph)%sizeDotState)
|
plasticState(ph)%sizeDotState)
|
||||||
constitutive_source_maxSizeDotState = max(constitutive_source_maxSizeDotState, &
|
constitutive_source_maxSizeDotState = max(constitutive_source_maxSizeDotState, &
|
||||||
maxval(sourceState(ph)%p(:)%sizeDotState))
|
maxval(sourceState(ph)%p(:)%sizeDotState))
|
||||||
constitutive_source_maxSizePostResults = max(constitutive_source_maxSizePostResults, &
|
|
||||||
maxval(sourceState(ph)%p(:)%sizePostResults))
|
|
||||||
enddo PhaseLoop2
|
enddo PhaseLoop2
|
||||||
|
|
||||||
|
|
||||||
|
@ -639,51 +599,6 @@ subroutine constitutive_collectDeltaState(S, Fe, Fi, ipc, ip, el)
|
||||||
end subroutine constitutive_collectDeltaState
|
end subroutine constitutive_collectDeltaState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief returns array of constitutive results
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
function constitutive_postResults(S, Fi, ipc, ip, el)
|
|
||||||
|
|
||||||
integer, intent(in) :: &
|
|
||||||
ipc, & !< component-ID of integration point
|
|
||||||
ip, & !< integration point
|
|
||||||
el !< element
|
|
||||||
real(pReal), dimension(sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
|
|
||||||
constitutive_postResults
|
|
||||||
real(pReal), intent(in), dimension(3,3) :: &
|
|
||||||
Fi !< intermediate deformation gradient
|
|
||||||
real(pReal), intent(in), dimension(3,3) :: &
|
|
||||||
S !< 2nd Piola Kirchhoff stress
|
|
||||||
integer :: &
|
|
||||||
startPos, endPos
|
|
||||||
integer :: &
|
|
||||||
i, of, instance !< counter in source loop
|
|
||||||
|
|
||||||
constitutive_postResults = 0.0_pReal
|
|
||||||
|
|
||||||
|
|
||||||
endPos = 0
|
|
||||||
|
|
||||||
SourceLoop: do i = 1, phase_Nsources(material_phaseAt(ipc,el))
|
|
||||||
startPos = endPos + 1
|
|
||||||
endPos = endPos + sourceState(material_phaseAt(ipc,el))%p(i)%sizePostResults
|
|
||||||
of = material_phasememberAt(ipc,ip,el)
|
|
||||||
sourceType: select case (phase_source(i,material_phaseAt(ipc,el)))
|
|
||||||
case (SOURCE_damage_isoBrittle_ID) sourceType
|
|
||||||
constitutive_postResults(startPos:endPos) = source_damage_isoBrittle_postResults(material_phaseAt(ipc,el),of)
|
|
||||||
case (SOURCE_damage_isoDuctile_ID) sourceType
|
|
||||||
constitutive_postResults(startPos:endPos) = source_damage_isoDuctile_postResults(material_phaseAt(ipc,el),of)
|
|
||||||
case (SOURCE_damage_anisoBrittle_ID) sourceType
|
|
||||||
constitutive_postResults(startPos:endPos) = source_damage_anisoBrittle_postResults(material_phaseAt(ipc,el),of)
|
|
||||||
case (SOURCE_damage_anisoDuctile_ID) sourceType
|
|
||||||
constitutive_postResults(startPos:endPos) = source_damage_anisoDuctile_postResults(material_phaseAt(ipc,el),of)
|
|
||||||
end select sourceType
|
|
||||||
|
|
||||||
enddo SourceLoop
|
|
||||||
|
|
||||||
end function constitutive_postResults
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief writes constitutive results to HDF5 output file
|
!> @brief writes constitutive results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -742,23 +742,9 @@ function crystallite_postResults(ipc, ip, el)
|
||||||
ip, & !< integration point index
|
ip, & !< integration point index
|
||||||
ipc !< grain index
|
ipc !< grain index
|
||||||
|
|
||||||
real(pReal), dimension(1+ &
|
real(pReal), dimension(2) :: crystallite_postResults
|
||||||
1+sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults)) :: &
|
|
||||||
crystallite_postResults
|
|
||||||
integer :: &
|
|
||||||
c
|
|
||||||
|
|
||||||
|
|
||||||
crystallite_postResults = 0.0_pReal
|
crystallite_postResults = 0.0_pReal
|
||||||
crystallite_postResults(1) = 0.0_pReal ! header-like information (length)
|
|
||||||
c = 1
|
|
||||||
|
|
||||||
crystallite_postResults(c+1) = real(sum(sourceState(material_phaseAt(ipc,el))%p(:)%sizePostResults),pReal) ! size of constitutive results
|
|
||||||
c = c + 1
|
|
||||||
if (size(crystallite_postResults)-c > 0) &
|
|
||||||
crystallite_postResults(c+1:size(crystallite_postResults)) = &
|
|
||||||
constitutive_postResults(crystallite_S(1:3,1:3,ipc,ip,el), crystallite_Fi(1:3,1:3,ipc,ip,el), &
|
|
||||||
ipc, ip, el)
|
|
||||||
|
|
||||||
end function crystallite_postResults
|
end function crystallite_postResults
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue