From cecf81dabd1bab87a4c8d1986cc225f7c5c15bc1 Mon Sep 17 00:00:00 2001 From: achalhp Date: Tue, 7 Nov 2023 09:41:53 +0530 Subject: [PATCH] 1st edit of the deltaFp --- ...phase_mechanical_plastic_phenopowerlaw.f90 | 144 ++++++++++-------- src/prec.mod | Bin 0 -> 13783 bytes 2 files changed, 80 insertions(+), 64 deletions(-) create mode 100644 src/prec.mod diff --git a/src/phase_mechanical_plastic_phenopowerlaw.f90 b/src/phase_mechanical_plastic_phenopowerlaw.f90 index 6904f4790..898d70c11 100644 --- a/src/phase_mechanical_plastic_phenopowerlaw.f90 +++ b/src/phase_mechanical_plastic_phenopowerlaw.f90 @@ -67,7 +67,7 @@ submodule(phase:plastic) phenopowerlaw ! containers for parameters, dot state index, and state type(tParameters), allocatable, dimension(:) :: param type(tIndexDotState), allocatable, dimension(:) :: indexDotState - type(tPhenopowerlawState), allocatable, dimension(:) :: state + type(tPhenopowerlawState), allocatable, dimension(:) :: state, dot_state, deltastate contains @@ -420,81 +420,54 @@ module subroutine plastic_kinematic_deltaFp(twinJump,deltaFp,ipc, ip, el) ! phaseAt, phasememberAt, & !name changed ! phase_plasticityInstance - implicit none - integer :: & - ph, of, instance, & - neighbor_el, & !< element number of neighboring material point - neighbor_ip, & !< integration point of neighboring material point - np, & !< neighbor phase - no, n !< nieghbor offset and index for loop at neighbor + implicit none + integer :: & + ph, en, instance, & !< 'of' is 'en' + neighbor_el, & !< element number of neighboring material point + neighbor_ip, & !< integration point of neighboring material point + np, & !< neighbor phase + no, n !< nieghbor offset and index for loop at neighbor - logical , intent(out) :: & - twinJump + logical , intent(out) :: & + twinJump - real(pReal), dimension(3,3), intent(out) :: & - deltaFp + real(pReal), dimension(3,3), intent(out) :: & + deltaFp - integer, intent(in) :: & - ipc, & !< element index - ip, & !< integration point index - el !< grain index + integer, intent(in) :: & + ipc, & !< element index + ip, & !< integration point index + el !< grain index ! ! real(pReal), dimension(3,3,param(instance)%totalNslip) :: & ! ! CorrespondanceMatrix - integer, dimension(52) :: & - twin_el_incl - real(pReal), dimension(6) :: & - neighbor_stt - real(pReal) :: & - random, random1 - integer :: & - i,j,var_growth,var_nucl - var_growth = 0 - var_nucl = 0 + integer, dimension(52) :: & + twin_el_incl + real(pReal), dimension(6) :: & + neighbor_stt + real(pReal) :: & + random, random1 + integer :: & + i,j,var_growth,var_nucl + var_growth = 0 + var_nucl = 0 !ph = phaseAt(ipc, ip, el) !of = phasememberAt(ipc, ip, el) !instance = phase_plasticityInstance(ph) -! associate(prm => param(instance), stt => state(instance), dlt => deltaState(instance)) + associate(prm => param(instance), stt => state(instance), dlt => deltaState(instance)) -! twinJump = .false. -! deltaFp = math_I3 - -! ! for eshelby circular inclusion -! twin_el_incl = (/ 10913,10914,10915,10916,10917,10918,10919,10920,10921,10922,10923,10924,10925, & -! 10993,10994,10995,10996,10997,10998,10999,11000,11001,11002,11074,11075,11076, & -! 11077,11078,11079,10751,10752,10753,10754,10755,10756,10757,10758,10759,10760, & -! 10670,10671,10672,10673,10674,10675,10676,10677,10678,10679,10680,10681,10682 /) -! ! TwinLooptest: do i=1_pInt, prm%totalNtwin -! ! write(6,*)'CorrespondenceMatrix for system',i, prm%CorrespondanceMatrix(:,:,i) -! ! enddo TwinLooptest + twinJump = .false. + deltaFp = math_I3 -!Saving the neighbor information in an array -! NeighborLoop1: do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,el)))) ! only 4 neighbors for quasi 2D (1 element in z direction) -! neighbor_el = mesh_ipNeighborhood(1,n,ip,el) ! Integer -! neighbor_ip = mesh_ipNeighborhood(2,n,ip,el) ! Integer -! np = phaseAt(1,neighbor_ip,neighbor_el) ! Integer -! no = phasememberAt(1,neighbor_ip,neighbor_el) ! Integer -! neighbor_stt(n) = state(phase_plasticityInstance(np))%variant_twin(no) ! Integer -! enddo NeighborLoop1 + call RANDOM_NUMBER(random) + !call RANDOM_NUMBER(random1) -! !checking if any of my neighbor is twinned if yes recognize the variant and exit -! ! NeighborLoop2: do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,el)))) ! only 4 neighbors for quasi 2D (1 element in z direction) -! ! neighbor_el = mesh_ipNeighborhood(1,n,ip,el) -! ! neighbor_ip = mesh_ipNeighborhood(2,n,ip,el) -! ! np = phaseAt(1,neighbor_ip,neighbor_el) -! ! ! if(of == 1) write(6,*)'phaseAt neighbor_ip of neighbor_el', np -! ! no = phasememberAt(1,neighbor_ip,neighbor_el) -! ! ! if(of == 1) write(6,*)'phasememberAt at neighbor_ip of neighbor_el', no -! ! if (state(phase_plasticityInstance(np))%variant_twin(no) > 0_pInt) then -! ! var_growth = state(phase_plasticityInstance(np))%variant_twin(no) -! ! -! ! exit NeighborLoop2 -! ! endif -! ! enddo NeighborLoop2 - -! call RANDOM_NUMBER(random) -! call RANDOM_NUMBER(random1) + Success_Growth: if (random <= sum(state(ph)%gamma_tw(:,en)/param(ph)%gamma_char)) then + twinJump = .true. + deltaFp = prm%CorrespondanceMatrix(:,:,var_growth) + + end if Success_Growth ! ! Sampling: if (var_growth > 0_pInt) then ! ! ! write(6,*)'I am sampling for growth with variant',var_growth ! ! Ability_Growth: if (stt%f_twin_grow(var_growth,of) > stt%fmc_twin_grow(var_growth,of) & @@ -537,10 +510,53 @@ module subroutine plastic_kinematic_deltaFp(twinJump,deltaFp,ipc, ip, el) ! endif Ability_Nucleation ! endif ! ! endif Sampling -! end associate + end associate end subroutine plastic_kinematic_deltaFp +!-------------------------------------------------------------------------------------------------- +!> @brief calculates (instantaneous) incremental change of microstructure +!-------------------------------------------------------------------------------------------------- +subroutine plastic_phenopowerlaw_deltaState(instance,of) + use prec, only: & + dNeq, & + dEq0 +! #ifdef DEBUG +! use debug, only: & +! debug_level, & +! debug_constitutive,& +! debug_levelExtensive, & +! debug_levelSelective +! #endif + + implicit none + integer, intent(in) :: & + instance, & + of + + associate(prm => param(instance), stt => state(instance), dlt => deltaState(instance)) + +! #ifdef DEBUG +! if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt & +! .and. (of == prm%of_debug & +! .or. .not. iand(debug_level(debug_constitutive),debug_levelSelective) /= 0_pInt)) then +! write(6,'(a)') '======= phenopowerlaw delta state =======' +! ! write(6,*) sense,state(instance)%sense(:,of) +! endif +! #endif + + !-------------------------------------------------------------------------------------------------- + !dlt%f_twin_nucl(:,of) = 0.0_pReal + !dlt%f_twin_grow(:,of) = 0.0_pReal + !dlt%fmc_twin_nucl(:,of) = 0.0_pReal + !dlt%fmc_twin_grow(:,of) = 0.0_pReal + !dlt%frozen(of) = 0.0_pReal + !dlt%variant_twin(of) = 0.0_pInt + + end associate + + end subroutine plastic_phenopowerlaw_deltaState + !-------------------------------------------------------------------------------------------------- !> @brief Write results to HDF5 output file. !-------------------------------------------------------------------------------------------------- diff --git a/src/prec.mod b/src/prec.mod new file mode 100644 index 0000000000000000000000000000000000000000..9a27e158eb7089d9769aa65b1568b6bd837c33f9 GIT binary patch literal 13783 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 N{U6rWWu5Le0s#C>EJ6SP literal 0 HcmV?d00001