diff --git a/code/homogenization.f90 b/code/homogenization.f90 index 77e5689c3..ff9deb741 100644 --- a/code/homogenization.f90 +++ b/code/homogenization.f90 @@ -120,7 +120,7 @@ subroutine homogenization_init() implicit none integer(pInt), parameter :: FILEUNIT = 200_pInt - integer(pInt) :: e,i,p,myInstance + integer(pInt) :: e,i,p,myInstance, NofMyField integer(pInt), dimension(:,:), pointer :: thisSize character(len=64), dimension(:,:), pointer :: thisOutput character(len=32) :: outputName !< name of output, intermediate fix until HDF5 output is ready @@ -176,6 +176,44 @@ subroutine homogenization_init() enddo close(FILEUNIT) +#ifdef NEWSTATE + do p = 1,material_Nhomogenization + NofMyField=count(material_homog==p) + + select case(field_damage_type(p)) + + case (FIELD_DAMAGE_LOCAL_ID) + fieldDamage(p)%sizeState = 0_pInt + fieldDamage(p)%sizePostResults = 0_pInt + allocate(fieldDamage(p)%state(fieldDamage(p)%sizeState,NofMyField), source = 1.0_pReal) + + case (FIELD_DAMAGE_NONLOCAL_ID) + fieldDamage(p)%sizeState = 1_pInt + fieldDamage(p)%sizePostResults = 1_pInt + allocate(fieldDamage(p)%state(fieldDamage(p)%sizeState,NofMyField), source = 1.0_pReal) + + end select + enddo + + do p = 1,material_Nhomogenization + NofMyField=count(material_homog==p) + + select case(field_thermal_type(p)) + + case (FIELD_THERMAL_ADIABATIC_ID) + fieldThermal(p)%sizeState = 0_pInt + fieldThermal(p)%sizePostResults = 0_pInt + allocate(fieldThermal(p)%state(fieldThermal(p)%sizeState,NofMyField), source = 1.0_pReal) + + case (FIELD_THERMAL_CONDUCTION_ID) + fieldThermal(p)%sizeState = 1_pInt + fieldThermal(p)%sizePostResults = 1_pInt + allocate(fieldThermal(p)%state(fieldThermal(p)%sizeState,NofMyField), source = 1.0_pReal) + + end select + enddo +#endif + !-------------------------------------------------------------------------------------------------- ! allocate and initialize global variables #ifndef NEWSTATE diff --git a/code/material.f90 b/code/material.f90 index a8d5f90b9..eb0625b55 100644 --- a/code/material.f90 +++ b/code/material.f90 @@ -33,15 +33,10 @@ module material #ifdef NEWSTATE LOCAL_DAMAGE_NONE_label = 'none', & LOCAL_DAMAGE_BRITTLE_label = 'brittle', & - LOCAL_THERMAL_NONE_label = 'none', & LOCAL_THERMAL_HEATGEN_label = 'heatgen', & - - FIELD_DAMAGE_NONE_label = 'none', & FIELD_DAMAGE_LOCAL_label = 'local', & FIELD_DAMAGE_NONLOCAL_label = 'nonlocal', & - - FIELD_THERMAL_NONE_label = 'none', & FIELD_THERMAL_ADIABATIC_label = 'adiabatic', & FIELD_THERMAL_CONDUCTION_label = 'conduction', & @@ -84,14 +79,12 @@ module material LOCAL_THERMAL_HEATGEN_ID end enum enum, bind(c) - enumerator :: FIELD_DAMAGE_NONE_ID, & - FIELD_DAMAGE_LOCAL_ID ,& + enumerator :: FIELD_DAMAGE_LOCAL_ID ,& FIELD_DAMAGE_NONLOCAL_ID end enum enum, bind(c) - enumerator :: FIELD_THERMAL_NONE_ID, & - FIELD_THERMAL_ADIABATIC_ID, & + enumerator :: FIELD_THERMAL_ADIABATIC_ID, & FIELD_THERMAL_CONDUCTION_ID end enum #else @@ -132,9 +125,9 @@ module material phase_damage !< local damage of each phase integer(kind(LOCAL_THERMAL_none_ID)), dimension(:), allocatable, public, protected :: & phase_thermal !< local thermal of each phase - integer(kind(FIELD_DAMAGE_none_ID)), dimension(:), allocatable, public, protected :: & + integer(kind(FIELD_DAMAGE_LOCAL_ID)), dimension(:), allocatable, public, protected :: & field_damage_type !< field damage of each phase - integer(kind(FIELD_THERMAL_none_ID)), dimension(:), allocatable, public, protected :: & + integer(kind(FIELD_THERMAL_ADIABATIC_ID)), dimension(:), allocatable, public, protected :: & field_thermal_type !< field thermal of each phase #else integer(kind(DAMAGE_none_ID)), dimension(:), allocatable, public, protected :: & @@ -268,6 +261,10 @@ module material LOCAL_DAMAGE_brittle_ID, & LOCAL_THERMAL_none_ID, & LOCAL_THERMAL_heatgen_ID, & + FIELD_DAMAGE_LOCAL_ID, & + FIELD_DAMAGE_NONLOCAL_ID, & + FIELD_THERMAL_ADIABATIC_ID, & + FIELD_THERMAL_CONDUCTION_ID, & #else DAMAGE_none_ID, & DAMAGE_local_ID, & @@ -462,8 +459,8 @@ subroutine material_parseHomogenization(fileUnit,myPart) allocate(homogenization_name(Nsections)); homogenization_name = '' allocate(homogenization_type(Nsections), source=HOMOGENIZATION_undefined_ID) #ifdef NEWSTATE - allocate(FIELD_DAMAGE_type(Nsections), source=FIELD_DAMAGE_none_ID) - allocate(FIELD_THERMAL_type(Nsections), source=FIELD_THERMAL_none_ID) + allocate(FIELD_DAMAGE_type(Nsections), source=FIELD_DAMAGE_LOCAL_ID) + allocate(FIELD_THERMAL_type(Nsections), source=FIELD_THERMAL_ADIABATIC_ID) #endif allocate(homogenization_typeInstance(Nsections), source=0_pInt) allocate(homogenization_Ngrains(Nsections), source=0_pInt) @@ -514,8 +511,6 @@ subroutine material_parseHomogenization(fileUnit,myPart) #ifdef NEWSTATE case ('field_damage') select case (IO_lc(IO_stringValue(line,positions,2_pInt))) - case(FIELD_DAMAGE_NONE_label) - FIELD_DAMAGE_type(section) = FIELD_DAMAGE_NONE_ID case(FIELD_DAMAGE_LOCAL_label) FIELD_DAMAGE_type(section) = FIELD_DAMAGE_LOCAL_ID case(FIELD_DAMAGE_NONLOCAL_label) @@ -526,8 +521,6 @@ subroutine material_parseHomogenization(fileUnit,myPart) case ('field_thermal') select case (IO_lc(IO_stringValue(line,positions,2_pInt))) - case(FIELD_THERMAL_NONE_label) - FIELD_THERMAL_type(section) = FIELD_THERMAL_NONE_ID case(FIELD_THERMAL_ADIABATIC_label) FIELD_THERMAL_type(section) = FIELD_THERMAL_ADIABATIC_ID case(FIELD_THERMAL_CONDUCTION_label)