diff --git a/code/constitutive.f90 b/code/constitutive.f90 index fccc93315..26fa4c0a5 100644 --- a/code/constitutive.f90 +++ b/code/constitutive.f90 @@ -135,7 +135,7 @@ subroutine constitutive_init character(len=64), dimension(:,:), pointer :: thisOutput character(len=32) :: outputName !< name of output, intermediate fix until HDF5 output is ready logical :: knownPlasticity, nonlocalConstitutionPresent -#ifdef HDF !< phase +#ifdef HDF integer(pInt), dimension(:,:,:), allocatable :: mappingConstitutive integer(pInt), dimension(:,:,:), allocatable :: mappingCrystallite integer(pInt), dimension(:), allocatable :: ConstitutivePosition @@ -245,10 +245,11 @@ subroutine constitutive_init select case(phase_elasticity(material_phase(g,i,e))) case default ! so far no output for elasticity end select - instance = phase_plasticityInstance(material_phase(g,i,e)) + phase = material_phase(g,i,e) + instance = phase_plasticityInstance(phase) #ifdef HDF - ConstitutivePosition(instance) = ConstitutivePosition(instance)+1_pInt - mappingConstitutive(g,e,1:2) = [ConstitutivePosition(instance),instance] + ConstitutivePosition(phase) = ConstitutivePosition(phase)+1_pInt + mappingConstitutive(g,e,1:2) = [ConstitutivePosition(phase),phase] #endif select case(phase_plasticity(material_phase(g,i,e))) case (PLASTICITY_NONE_ID) diff --git a/code/constitutive_dislotwin.f90 b/code/constitutive_dislotwin.f90 index 4c4e3e96b..851c3c6ad 100644 --- a/code/constitutive_dislotwin.f90 +++ b/code/constitutive_dislotwin.f90 @@ -372,7 +372,7 @@ subroutine constitutive_dislotwin_init(fileUnit) call IO_error(105_pInt,ext_msg=IO_stringValue(line,positions,2_pInt)//' ('//PLASTICITY_DISLOTWIN_label//')') end select !-------------------------------------------------------------------------------------------------- -! parameters depending on slip number of slip system families +! parameters depending on number of slip system families case ('nslip') if (positions(1) < Nchunks_SlipFamilies + 1_pInt) & call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') @@ -380,7 +380,7 @@ subroutine constitutive_dislotwin_init(fileUnit) call IO_error(150_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') Nchunks_SlipFamilies = positions(1) - 1_pInt do j = 1_pInt, Nchunks_SlipFamilies - constitutive_dislotwin_Nslip(j,instance) = IO_intValue(line,positions,1_pInt+j) + constitutive_dislotwin_Nslip(j,instance) = IO_intValue(line,positions,1_pInt+j) enddo case ('rhoedge0','rhoedgedip0','slipburgers','qedge','v0','clambdaslip','tau_peierls','p_slip','q_slip') do j = 1_pInt, Nchunks_SlipFamilies @@ -435,6 +435,34 @@ subroutine constitutive_dislotwin_init(fileUnit) case ('r_twin') constitutive_dislotwin_rPerTwinFamily(1:Nchunks_TwinFamilies,instance) = tempPerTwin(1:Nchunks_TwinFamilies) end select +!-------------------------------------------------------------------------------------------------- +! parameters depending on number of interactions + case ('interaction_slipslip','interactionslipslip') + if (positions(1) < 1_pInt + Nchunks_SlipSlip) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') + do j = 1_pInt, Nchunks_SlipSlip + constitutive_dislotwin_interaction_SlipSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('interaction_sliptwin','interactionsliptwin') + if (positions(1) < 1_pInt + Nchunks_SlipTwin) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') + do j = 1_pInt, Nchunks_SlipTwin + constitutive_dislotwin_interaction_SlipTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('interaction_twinslip','interactiontwinslip') + if (positions(1) < 1_pInt + Nchunks_TwinSlip) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') + do j = 1_pInt, Nchunks_TwinSlip + constitutive_dislotwin_interaction_TwinSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo + case ('interaction_twintwin','interactiontwintwin') + if (positions(1) < 1_pInt + Nchunks_TwinTwin) & + call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') + do j = 1_pInt, Nchunks_TwinTwin + constitutive_dislotwin_interaction_TwinTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) + enddo +!-------------------------------------------------------------------------------------------------- +! parameters independent of number of slip/twin systems case ('grainsize') constitutive_dislotwin_GrainSize(instance) = IO_floatValue(line,positions,2_pInt) case ('maxtwinfraction') @@ -467,30 +495,6 @@ subroutine constitutive_dislotwin_init(fileUnit) constitutive_dislotwin_CEdgeDipMinDistance(instance) = IO_floatValue(line,positions,2_pInt) case ('catomicvolume') constitutive_dislotwin_CAtomicVolume(instance) = IO_floatValue(line,positions,2_pInt) - case ('interaction_slipslip','interactionslipslip') - if (positions(1) < 1_pInt + Nchunks_SlipSlip) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') - do j = 1_pInt, Nchunks_SlipSlip - constitutive_dislotwin_interaction_SlipSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('interaction_sliptwin','interactionsliptwin') - if (positions(1) < 1_pInt + Nchunks_SlipTwin) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') - do j = 1_pInt, Nchunks_SlipTwin - constitutive_dislotwin_interaction_SlipTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('interaction_twinslip','interactiontwinslip') - if (positions(1) < 1_pInt + Nchunks_TwinSlip) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') - do j = 1_pInt, Nchunks_TwinSlip - constitutive_dislotwin_interaction_TwinSlip(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo - case ('interaction_twintwin','interactiontwintwin') - if (positions(1) < 1_pInt + Nchunks_TwinTwin) & - call IO_warning(52_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_DISLOTWIN_label//')') - do j = 1_pInt, Nchunks_TwinTwin - constitutive_dislotwin_interaction_TwinTwin(j,instance) = IO_floatValue(line,positions,1_pInt+j) - enddo case ('sfe_0k') constitutive_dislotwin_SFE_0K(instance) = IO_floatValue(line,positions,2_pInt) case ('dsfe_dt') diff --git a/code/mesh.f90 b/code/mesh.f90 index 53fbc0c79..90a62a218 100644 --- a/code/mesh.f90 +++ b/code/mesh.f90 @@ -8,7 +8,6 @@ !> @author Krishna Komerla, Max-Planck-Institut für Eisenforschung GmbH !> @brief Sets up the mesh for the solvers MSC.Marc, Abaqus and the spectral solver !-------------------------------------------------------------------------------------------------- - module mesh use, intrinsic :: iso_c_binding use prec, only: pReal, pInt @@ -619,6 +618,7 @@ subroutine mesh_init(ip,el) end subroutine mesh_init + !-------------------------------------------------------------------------------------------------- !> @brief Gives the FE to CP ID mapping by binary search through lookup array !! valid questions (what) are 'elem', 'node' @@ -2462,11 +2462,11 @@ subroutine mesh_marc_get_tableStyles(fileUnit) !! 'mesh_Nelems' and 'mesh_Nnodes' !-------------------------------------------------------------------------------------------------- subroutine mesh_marc_count_nodesAndElements(fileUnit) - - use IO, only: IO_lc, & - IO_stringValue, & - IO_stringPos, & - IO_IntValue + use IO, only: & + IO_lc, & + IO_stringValue, & + IO_stringPos, & + IO_IntValue implicit none integer(pInt), intent(in) :: fileUnit @@ -2503,11 +2503,11 @@ subroutine mesh_marc_count_nodesAndElements(fileUnit) !! 'mesh_maxNelemInSet' !-------------------------------------------------------------------------------------------------- subroutine mesh_marc_count_elementSets(fileUnit) - - use IO, only: IO_lc, & - IO_stringValue, & - IO_stringPos, & - IO_countContinuousIntValues + use IO, only: & + IO_lc, & + IO_stringValue, & + IO_stringPos, & + IO_countContinuousIntValues implicit none integer(pInt), intent(in) :: fileUnit @@ -5115,6 +5115,7 @@ subroutine mesh_write_cellGeom #ifdef HDF call HDF5_mappingCells(cellconnection(1:j)) #endif + error=VTK_ini(output_format = 'ASCII', & title=trim(getSolverJobName())//' cell mesh', & filename = trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//'_ipbased.vtk', &