From 5c1889e6cd204347e82d9cd1d63d7df036551b84 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Thu, 26 Mar 2009 08:43:31 +0000 Subject: [PATCH] simplified constitutive_init call --- trunk/constitutive.f90 | 30 +++++++++--------- trunk/constitutive_dislobased.f90 | 12 +++---- trunk/constitutive_j2.f90 | 16 ++++------ trunk/constitutive_phenomenological.f90 | 42 ++++++++++++++----------- 4 files changed, 49 insertions(+), 51 deletions(-) diff --git a/trunk/constitutive.f90 b/trunk/constitutive.f90 index 0ef4e32bb..1616822ec 100644 --- a/trunk/constitutive.f90 +++ b/trunk/constitutive.f90 @@ -68,27 +68,27 @@ subroutine constitutive_init() case (constitutive_phenomenological_label) allocate(constitutive_state_old(g,i,e)%p(constitutive_phenomenological_sizeState(myInstance))) allocate(constitutive_state_new(g,i,e)%p(constitutive_phenomenological_sizeState(myInstance))) - constitutive_state_new(g,i,e)%p = constitutive_phenomenological_stateInit(g,i,e) - constitutive_state_old(g,i,e)%p = constitutive_phenomenological_stateInit(g,i,e) - constitutive_sizeDotState(g,i,e) = constitutive_phenomenological_sizeDotState(myInstance) - constitutive_sizeState(g,i,e) = constitutive_phenomenological_sizeState(myInstance) - constitutive_sizePostResults(g,i,e) = constitutive_phenomenological_sizePostResults(myInstance) + constitutive_state_new(g,i,e)%p = constitutive_phenomenological_stateInit(myInstance) + constitutive_state_old(g,i,e)%p = constitutive_phenomenological_stateInit(myInstance) + constitutive_sizeDotState(g,i,e) = constitutive_phenomenological_sizeDotState(myInstance) + constitutive_sizeState(g,i,e) = constitutive_phenomenological_sizeState(myInstance) + constitutive_sizePostResults(g,i,e) = constitutive_phenomenological_sizePostResults(myInstance) case (constitutive_j2_label) allocate(constitutive_state_old(g,i,e)%p(constitutive_j2_sizeState(myInstance))) allocate(constitutive_state_new(g,i,e)%p(constitutive_j2_sizeState(myInstance))) - constitutive_state_new(g,i,e)%p = constitutive_j2_stateInit(g,i,e) - constitutive_state_old(g,i,e)%p = constitutive_j2_stateInit(g,i,e) - constitutive_sizeDotState(g,i,e) = constitutive_j2_sizeDotState(myInstance) - constitutive_sizeState(g,i,e) = constitutive_j2_sizeState(myInstance) - constitutive_sizePostResults(g,i,e) = constitutive_j2_sizePostResults(myInstance) + constitutive_state_new(g,i,e)%p = constitutive_j2_stateInit(myInstance) + constitutive_state_old(g,i,e)%p = constitutive_j2_stateInit(myInstance) + constitutive_sizeDotState(g,i,e) = constitutive_j2_sizeDotState(myInstance) + constitutive_sizeState(g,i,e) = constitutive_j2_sizeState(myInstance) + constitutive_sizePostResults(g,i,e) = constitutive_j2_sizePostResults(myInstance) case (constitutive_dislobased_label) allocate(constitutive_state_old(g,i,e)%p(constitutive_dislobased_sizeState(myInstance))) allocate(constitutive_state_new(g,i,e)%p(constitutive_dislobased_sizeState(myInstance))) - constitutive_state_new(g,i,e)%p = constitutive_dislobased_stateInit(g,i,e) - constitutive_state_old(g,i,e)%p = constitutive_dislobased_stateInit(g,i,e) - constitutive_sizeDotState(g,i,e) = constitutive_dislobased_sizeDotState(myInstance) - constitutive_sizeState(g,i,e) = constitutive_dislobased_sizeState(myInstance) - constitutive_sizePostResults(g,i,e) = constitutive_dislobased_sizePostResults(myInstance) + constitutive_state_new(g,i,e)%p = constitutive_dislobased_stateInit(myInstance) + constitutive_state_old(g,i,e)%p = constitutive_dislobased_stateInit(myInstance) + constitutive_sizeDotState(g,i,e) = constitutive_dislobased_sizeDotState(myInstance) + constitutive_sizeState(g,i,e) = constitutive_dislobased_sizeState(myInstance) + constitutive_sizePostResults(g,i,e) = constitutive_dislobased_sizePostResults(myInstance) case default call IO_error(200,material_phase(g,i,e)) ! unknown constitution end select diff --git a/trunk/constitutive_dislobased.f90 b/trunk/constitutive_dislobased.f90 index e9d2f9517..506d365c1 100644 --- a/trunk/constitutive_dislobased.f90 +++ b/trunk/constitutive_dislobased.f90 @@ -309,22 +309,18 @@ subroutine constitutive_dislobased_init(file) end subroutine -function constitutive_dislobased_stateInit(ipc,ip,el) +function constitutive_dislobased_stateInit(myInstance) !********************************************************************* !* initial microstructural state * !********************************************************************* use prec, only: pReal,pInt - use material, only: material_phase, phase_constitutionInstance implicit none !* Definition of variables - integer(pInt), intent(in) :: ipc,ip,el - integer(pInt) matID - real(pReal), dimension(constitutive_dislobased_Nslip(phase_constitutionInstance(material_phase(ipc,ip,el)))) :: & - constitutive_dislobased_stateInit + integer(pInt), intent(in) :: myInstance + real(pReal), dimension(constitutive_dislobased_Nslip(myInstance)) :: constitutive_dislobased_stateInit - matID = phase_constitutionInstance(material_phase(ipc,ip,el)) - constitutive_dislobased_stateInit = constitutive_dislobased_rho0(matID) + constitutive_dislobased_stateInit = constitutive_dislobased_rho0(myInstance) return end function diff --git a/trunk/constitutive_j2.f90 b/trunk/constitutive_j2.f90 index 88bfa83f3..c7a6eb8e0 100644 --- a/trunk/constitutive_j2.f90 +++ b/trunk/constitutive_j2.f90 @@ -80,7 +80,7 @@ subroutine constitutive_j2_init(file) allocate(constitutive_j2_sizeState(maxNinstance)) ; constitutive_j2_sizeState = 0_pInt allocate(constitutive_j2_sizePostResults(maxNinstance)); constitutive_j2_sizePostResults = 0_pInt allocate(constitutive_j2_output(maxval(phase_Noutput), & - maxNinstance)) ; constitutive_j2_output = '' + maxNinstance)) ; constitutive_j2_output = '' allocate(constitutive_j2_C11(maxNinstance)) ; constitutive_j2_C11 = 0.0_pReal allocate(constitutive_j2_C12(maxNinstance)) ; constitutive_j2_C12 = 0.0_pReal allocate(constitutive_j2_Cslip_66(6,6,maxNinstance)) ; constitutive_j2_Cslip_66 = 0.0_pReal @@ -109,7 +109,7 @@ subroutine constitutive_j2_init(file) output = 0 ! reset output counter endif if (section > 0 .and. phase_constitution(section) == constitutive_j2_label) then ! one of my sections - i = phase_constitutionInstance(section) ! which instance of my constitution is present phase + i = phase_constitutionInstance(section) ! which instance of my constitution is present phase positions = IO_stringPos(line,maxNchunks) tag = IO_lc(IO_stringValue(line,positions,1)) ! extract key select case(tag) @@ -179,22 +179,18 @@ subroutine constitutive_j2_init(file) end subroutine -function constitutive_j2_stateInit(ipc,ip,el) +function constitutive_j2_stateInit(myInstance) !********************************************************************* !* initial microstructural state * !********************************************************************* use prec, only: pReal,pInt - use material, only: material_phase, phase_constitutionInstance implicit none !* Definition of variables - integer(pInt), intent(in) :: ipc,ip,el - integer(pInt) matID - real(pReal), dimension(1) :: & - constitutive_j2_stateInit + integer(pInt), intent(in) :: myInstance + real(pReal), dimension(1) :: constitutive_j2_stateInit - matID = phase_constitutionInstance(material_phase(ipc,ip,el)) - constitutive_j2_stateInit = constitutive_j2_s0(matID) + constitutive_j2_stateInit = constitutive_j2_s0(myInstance) return end function diff --git a/trunk/constitutive_phenomenological.f90 b/trunk/constitutive_phenomenological.f90 index 808a98aba..e8087bfae 100644 --- a/trunk/constitutive_phenomenological.f90 +++ b/trunk/constitutive_phenomenological.f90 @@ -37,10 +37,12 @@ MODULE constitutive_phenomenological integer(pInt), dimension(:), allocatable :: constitutive_phenomenological_sizeDotState, & constitutive_phenomenological_sizeState, & constitutive_phenomenological_sizePostResults - character(len=64), dimension(:,:), allocatable :: constitutive_phenomenological_output + character(len=64), dimension(:,:), allocatable :: constitutive_phenomenological_output + character(len=32), dimension(:), allocatable :: constitutive_phenomenological_structureName integer(pInt), dimension(:), allocatable :: constitutive_phenomenological_structure - integer(pInt), dimension(:), allocatable :: constitutive_phenomenological_Nslip + integer(pInt), dimension(:), allocatable :: constitutive_phenomenological_Nslip + real(pReal), dimension(:), allocatable :: constitutive_phenomenological_CoverA real(pReal), dimension(:), allocatable :: constitutive_phenomenological_C11 real(pReal), dimension(:), allocatable :: constitutive_phenomenological_C12 @@ -79,7 +81,8 @@ subroutine constitutive_phenomenological_init(file) use prec, only: pInt, pReal use math, only: math_Mandel3333to66, math_Voigt66to3333 use IO - use material + use material + use lattice, only: lattice_initializeStructure integer(pInt), intent(in) :: file integer(pInt), parameter :: maxNchunks = 7 @@ -95,10 +98,12 @@ subroutine constitutive_phenomenological_init(file) allocate(constitutive_phenomenological_sizeState(maxNinstance)) ; constitutive_phenomenological_sizeState = 0_pInt allocate(constitutive_phenomenological_sizePostResults(maxNinstance)); constitutive_phenomenological_sizePostResults = 0_pInt allocate(constitutive_phenomenological_output(maxval(phase_Noutput), & - maxNinstance)) ; constitutive_phenomenological_output = '' + maxNinstance)) ; constitutive_phenomenological_output = '' + allocate(constitutive_phenomenological_structureName(maxNinstance)) ; constitutive_phenomenological_structureName = '' allocate(constitutive_phenomenological_structure(maxNinstance)) ; constitutive_phenomenological_structure = 0_pInt - allocate(constitutive_phenomenological_Nslip(maxNinstance)) ; constitutive_phenomenological_Nslip = 0_pInt + allocate(constitutive_phenomenological_Nslip(maxNinstance)) ; constitutive_phenomenological_Nslip = 0_pInt + allocate(constitutive_phenomenological_CoverA(maxNinstance)) ; constitutive_phenomenological_CoverA = 0.0_pReal allocate(constitutive_phenomenological_C11(maxNinstance)) ; constitutive_phenomenological_C11 = 0.0_pReal allocate(constitutive_phenomenological_C12(maxNinstance)) ; constitutive_phenomenological_C12 = 0.0_pReal @@ -138,11 +143,14 @@ subroutine constitutive_phenomenological_init(file) case ('(output)') output = output + 1 constitutive_phenomenological_output(output,i) = IO_lc(IO_stringValue(line,positions,2)) - case ('lattice_structure') + case ('lattice_structure') + constitutive_phenomenological_structureName(i) = IO_lc(IO_stringValue(line,positions,2)) case ('nslip') - constitutive_phenomenological_Nslip(i) = IO_intValue(line,positions,2) - case ('covera_ratio') + constitutive_phenomenological_Nslip(i) = IO_intValue(line,positions,2) + + case ('covera_ratio') + constitutive_phenomenological_CoverA(i) = IO_floatValue(line,positions,2) case ('c11') constitutive_phenomenological_C11(i) = IO_floatValue(line,positions,2) @@ -172,8 +180,10 @@ subroutine constitutive_phenomenological_init(file) endif enddo -100 do i = 1,maxNinstance - constitutive_phenomenological_structure(i) = lattice_initializeStructure(constitutive_phenomenological_structureName(i), & +100 do i = 1,maxNinstance + + constitutive_phenomenological_structure(i) = lattice_initializeStructure(constitutive_phenomenological_structureName(i), & + constitutive_phenomenological_CoverA(i)) ! sanity checks if (constitutive_phenomenological_structure(i) < 1 .or. & constitutive_phenomenological_structure(i) > 3) call IO_error(201) @@ -242,22 +252,18 @@ subroutine constitutive_phenomenological_init(file) end subroutine -function constitutive_phenomenological_stateInit(ipc,ip,el) +function constitutive_phenomenological_stateInit(myInstance) !********************************************************************* !* initial microstructural state * !********************************************************************* use prec, only: pReal,pInt - use material, only: material_phase, phase_constitutionInstance implicit none !* Definition of variables - integer(pInt), intent(in) :: ipc,ip,el - integer(pInt) matID - real(pReal), dimension(constitutive_phenomenological_Nslip(phase_constitutionInstance(material_phase(ipc,ip,el)))) :: & - constitutive_phenomenological_stateInit + integer(pInt), intent(in) :: myInstance + real(pReal), dimension(constitutive_phenomenological_Nslip(myInstance)) :: constitutive_phenomenological_stateInit - matID = phase_constitutionInstance(material_phase(ipc,ip,el)) - constitutive_phenomenological_stateInit = constitutive_phenomenological_s0_slip(matID) + constitutive_phenomenological_stateInit = constitutive_phenomenological_s0_slip(myInstance) return end function