diff --git a/code/constitutive.f90 b/code/constitutive.f90 index 91ab1ee8f..cb4ab8e9e 100644 --- a/code/constitutive.f90 +++ b/code/constitutive.f90 @@ -42,7 +42,6 @@ CONTAINS !* - constitutive_postResults !**************************************** - subroutine constitutive_init() !************************************** !* Module initialization * @@ -54,6 +53,7 @@ subroutine constitutive_init() use material use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal @@ -67,6 +67,7 @@ subroutine constitutive_init() call constitutive_j2_init(fileunit) ! parse all phases of this constitution call constitutive_phenopowerlaw_init(fileunit) + call constitutive_titanmod_init(fileunit) call constitutive_dislotwin_init(fileunit) call constitutive_nonlocal_init(fileunit) @@ -87,6 +88,9 @@ subroutine constitutive_init() case (constitutive_phenopowerlaw_label) thisOutput => constitutive_phenopowerlaw_output thisSize => constitutive_phenopowerlaw_sizePostResult + case (constitutive_titanmod_label) + thisOutput => constitutive_titanmod_output + thisSize => constitutive_titanmod_sizePostResult case (constitutive_dislotwin_label) thisOutput => constitutive_dislotwin_output thisSize => constitutive_dislotwin_sizePostResult @@ -167,6 +171,23 @@ subroutine constitutive_init() constitutive_sizeState(g,i,e) = constitutive_phenopowerlaw_sizeState(myInstance) constitutive_sizeDotState(g,i,e) = constitutive_phenopowerlaw_sizeDotState(myInstance) constitutive_sizePostResults(g,i,e) = constitutive_phenopowerlaw_sizePostResults(myInstance) + + case (constitutive_titanmod_label) + allocate(constitutive_state0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_partionedState0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_subState0(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_state(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_state_backup(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_relevantState(g,i,e)%p(constitutive_titanmod_sizeState(myInstance))) + allocate(constitutive_dotState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance))) + allocate(constitutive_dotState_backup(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance))) + allocate(constitutive_previousDotState(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance))) + allocate(constitutive_previousDotState2(g,i,e)%p(constitutive_titanmod_sizeDotState(myInstance))) + constitutive_state0(g,i,e)%p = constitutive_titanmod_stateInit(myInstance) + constitutive_relevantState(g,i,e)%p = constitutive_titanmod_relevantState(myInstance) + constitutive_sizeState(g,i,e) = constitutive_titanmod_sizeState(myInstance) + constitutive_sizeDotState(g,i,e) = constitutive_titanmod_sizeDotState(myInstance) + constitutive_sizePostResults(g,i,e) = constitutive_titanmod_sizePostResults(myInstance) case (constitutive_dislotwin_label) allocate(constitutive_state0(g,i,e)%p(constitutive_dislotwin_sizeState(myInstance))) @@ -254,6 +275,7 @@ function constitutive_homogenizedC(ipc,ip,el) use material, only: phase_constitution,material_phase use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -269,7 +291,11 @@ function constitutive_homogenizedC(ipc,ip,el) case (constitutive_phenopowerlaw_label) constitutive_homogenizedC = constitutive_phenopowerlaw_homogenizedC(constitutive_state,ipc,ip,el) - + + case (constitutive_titanmod_label) + constitutive_homogenizedC = constitutive_titanmod_homogenizedC(constitutive_state,ipc,ip,el) +! write(6,*) 'called homogenized in constitutive' + case (constitutive_dislotwin_label) constitutive_homogenizedC = constitutive_dislotwin_homogenizedC(constitutive_state,ipc,ip,el) @@ -294,6 +320,7 @@ function constitutive_averageBurgers(ipc,ip,el) use material, only: phase_constitution,material_phase use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -309,6 +336,9 @@ function constitutive_averageBurgers(ipc,ip,el) case (constitutive_phenopowerlaw_label) constitutive_averageBurgers = 2.5e-10_pReal !constitutive_phenopowerlaw_averageBurgers(constitutive_state,ipc,ip,el) + + case (constitutive_titanmod_label) + constitutive_averageBurgers = 2.5e-10_pReal !constitutive_titanmod_averageBurgers(constitutive_state,ipc,ip,el) case (constitutive_dislotwin_label) constitutive_averageBurgers = 2.5e-10_pReal !constitutive_dislotwin_averageBurgers(constitutive_state,ipc,ip,el) @@ -341,6 +371,7 @@ subroutine constitutive_microstructure(Temperature,Tstar_v,Fe,Fp,disorientation, mesh_maxNipNeighbors use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -359,6 +390,9 @@ real(pReal), dimension(4,mesh_maxNipNeighbors), intent(in) :: disorientation case (constitutive_phenopowerlaw_label) call constitutive_phenopowerlaw_microstructure(Temperature,constitutive_state,ipc,ip,el) + + case (constitutive_titanmod_label) + call constitutive_titanmod_microstructure(Temperature,constitutive_state,ipc,ip,el) case (constitutive_dislotwin_label) call constitutive_dislotwin_microstructure(Temperature,constitutive_state,ipc,ip,el) @@ -388,6 +422,7 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, ip use material, only: phase_constitution,material_phase use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -406,6 +441,9 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, Temperature, ip case (constitutive_phenopowerlaw_label) call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el) + + case (constitutive_titanmod_label) + call constitutive_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el) case (constitutive_dislotwin_label) call constitutive_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v,Temperature,constitutive_state,ipc,ip,el) @@ -443,6 +481,7 @@ use material, only: phase_constitution, & homogenization_maxNgrains use constitutive_j2 use constitutive_phenopowerlaw +use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal @@ -475,7 +514,10 @@ select case (phase_constitution(material_phase(ipc,ip,el))) case (constitutive_phenopowerlaw_label) constitutive_dotState(ipc,ip,el)%p = constitutive_phenopowerlaw_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el) - + + case (constitutive_titanmod_label) + constitutive_dotState(ipc,ip,el)%p = constitutive_titanmod_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el) + case (constitutive_dislotwin_label) constitutive_dotState(ipc,ip,el)%p = constitutive_dislotwin_dotState(Tstar_v,Temperature,constitutive_state,ipc,ip,el) @@ -511,6 +553,7 @@ function constitutive_dotTemperature(Tstar_v,Temperature,ipc,ip,el) use material, only: phase_constitution,material_phase use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -528,6 +571,9 @@ function constitutive_dotTemperature(Tstar_v,Temperature,ipc,ip,el) case (constitutive_phenopowerlaw_label) constitutive_dotTemperature = constitutive_phenopowerlaw_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el) + + case (constitutive_titanmod_label) + constitutive_dotTemperature = constitutive_titanmod_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el) case (constitutive_dislotwin_label) constitutive_dotTemperature = constitutive_dislotwin_dotTemperature(Tstar_v,Temperature,constitutive_state,ipc,ip,el) @@ -559,6 +605,7 @@ function constitutive_postResults(Tstar_v, subTstar0_v, Fe, Fp, Temperature, mis homogenization_maxNgrains use constitutive_j2 use constitutive_phenopowerlaw + use constitutive_titanmod use constitutive_dislotwin use constitutive_nonlocal implicit none @@ -579,6 +626,9 @@ function constitutive_postResults(Tstar_v, subTstar0_v, Fe, Fp, Temperature, mis case (constitutive_phenopowerlaw_label) constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el) + + case (constitutive_titanmod_label) + constitutive_postResults = constitutive_titanmod_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el) case (constitutive_dislotwin_label) constitutive_postResults = constitutive_dislotwin_postResults(Tstar_v,Temperature,dt,constitutive_state,ipc,ip,el) diff --git a/code/constitutive_titanmod.f90 b/code/constitutive_titanmod.f90 index 0ccf747d1..69b00f81c 100644 --- a/code/constitutive_titanmod.f90 +++ b/code/constitutive_titanmod.f90 @@ -1861,7 +1861,8 @@ do f = 1,lattice_maxNtwinFamily ! loop over all ! state(g,ip,el)%p(13*ns+3*nt+j)=dgdot_dtautwin(j) !* Plastic velocity gradient for mechanical twinning - Lp = Lp + sumf*gdot_twin(j)*lattice_Stwin(:,:,index_myFamily+i,myStructure) +! Lp = Lp + sumf*gdot_twin(j)*lattice_Stwin(:,:,index_myFamily+i,myStructure) + Lp = Lp + gdot_twin(j)*lattice_Stwin(:,:,index_myFamily+i,myStructure) !* Calculation of the tangent of Lp forall (k=1:3,l=1:3,m=1:3,n=1:3) & diff --git a/code/crystallite.f90 b/code/crystallite.f90 index 1340817a2..49c92a546 100644 --- a/code/crystallite.f90 +++ b/code/crystallite.f90 @@ -98,6 +98,8 @@ subroutine crystallite_init(Temperature) use lattice, only: lattice_symmetryTypes use constitutive_phenopowerlaw, only: constitutive_phenopowerlaw_label, & constitutive_phenopowerlaw_structure + use constitutive_titanmod, only: constitutive_titanmod_label, & + constitutive_titanmod_structure use constitutive_dislotwin, only: constitutive_dislotwin_label, & constitutive_dislotwin_structure use constitutive_nonlocal, only: constitutive_nonlocal_label, & @@ -290,6 +292,8 @@ subroutine crystallite_init(Temperature) select case (phase_constitution(myPhase)) case (constitutive_phenopowerlaw_label) myStructure = constitutive_phenopowerlaw_structure(phase_constitutionInstance(myPhase)) + case (constitutive_titanmod_label) + myStructure = constitutive_titanmod_structure(phase_constitutionInstance(myPhase)) case (constitutive_dislotwin_label) myStructure = constitutive_dislotwin_structure(phase_constitutionInstance(myPhase)) case (constitutive_nonlocal_label) diff --git a/code/mpie_cpfem_marc.f90 b/code/mpie_cpfem_marc.f90 index 42f7a1032..5f2775d58 100644 --- a/code/mpie_cpfem_marc.f90 +++ b/code/mpie_cpfem_marc.f90 @@ -95,6 +95,7 @@ END MODULE include "material.f90" ! uses prec, math, IO, mesh include "lattice.f90" ! uses prec, math, IO, material include "constitutive_phenopowerlaw.f90" ! uses prec, math, IO, lattice, material, debug + include "constitutive_titanmod.f90" ! uses prec, math, IO, lattice, material, debug include "constitutive_j2.f90" ! uses prec, math, IO, lattice, material, debug include "constitutive_dislotwin.f90" ! uses prec, math, IO, lattice, material, debug include "constitutive_nonlocal.f90" ! uses prec, math, IO, lattice, material, debug