diff --git a/src/HDF5_utilities.f90 b/src/HDF5_utilities.f90 index 3a0313a3c..a4aa79e9b 100644 --- a/src/HDF5_utilities.f90 +++ b/src/HDF5_utilities.f90 @@ -7,9 +7,11 @@ module HDF5_utilities use prec use IO - use HDF5 use rotations use numerics +#if defined(PETSc) || defined(DAMASK_HDF5) + use HDF5 +#endif #ifdef PETSc use PETSC #endif @@ -17,6 +19,7 @@ module HDF5_utilities implicit none public +#if defined(PETSc) || defined(DAMASK_HDF5) !-------------------------------------------------------------------------------------------------- !> @brief reads pInt or pReal data of defined shape from file ! ToDo: order of arguments wrong !> @details for parallel IO, all dimension except for the last need to match @@ -1925,5 +1928,5 @@ subroutine finalize_write(plist_id, dset_id, filespace_id, memspace_id) if (hdferr < 0) call IO_error(1_pInt,ext_msg='finalize_write: h5sclose_f/memspace_id') end subroutine finalize_write - +#endif end module HDF5_Utilities diff --git a/src/commercialFEM_fileList.f90 b/src/commercialFEM_fileList.f90 index 4cee9bc6f..e2b04336f 100644 --- a/src/commercialFEM_fileList.f90 +++ b/src/commercialFEM_fileList.f90 @@ -17,10 +17,8 @@ #include "geometry_plastic_nonlocal.f90" #include "element.f90" #include "mesh_base.f90" -#ifdef DAMASK_HDF5 #include "HDF5_utilities.f90" #include "results.f90" -#endif #ifdef Abaqus #include "mesh_abaqus.f90" #endif diff --git a/src/constitutive.f90 b/src/constitutive.f90 index 4ac88797b..ed815b926 100644 --- a/src/constitutive.f90 +++ b/src/constitutive.f90 @@ -5,9 +5,35 @@ !-------------------------------------------------------------------------------------------------- module constitutive use math + use debug + use numerics + use IO + use config + use material + use results + use HDF5_utilities + use lattice + use mesh + use plastic_none + use plastic_isotropic + use plastic_phenopowerlaw + use plastic_kinehardening + use plastic_dislotwin + use plastic_disloucla + use plastic_nonlocal + use source_thermal_dissipation + use source_thermal_externalheat + use source_damage_isoBrittle + use source_damage_isoDuctile + use source_damage_anisoBrittle + use source_damage_anisoDuctile + use kinematics_cleavage_opening + use kinematics_slipplane_opening + use kinematics_thermal_expansion implicit none private + integer, public, protected :: & constitutive_plasticity_maxSizePostResults, & constitutive_plasticity_maxSizeDotState, & @@ -37,74 +63,6 @@ contains !> @brief allocates arrays pointing to array of the various constitutive modules !-------------------------------------------------------------------------------------------------- subroutine constitutive_init - use debug, only: & - debug_constitutive, & - debug_levelBasic - use numerics, only: & - worldrank - use IO, only: & - IO_error, & - IO_write_jobFile - use config, only: & - material_Nphase, & - phase_name - use material, only: & - material_phase, & - phase_plasticity, & - phase_plasticityInstance, & - phase_Nsources, & - phase_source, & - phase_kinematics, & - ELASTICITY_hooke_ID, & - PLASTICITY_none_ID, & - PLASTICITY_isotropic_ID, & - PLASTICITY_phenopowerlaw_ID, & - PLASTICITY_kinehardening_ID, & - PLASTICITY_dislotwin_ID, & - PLASTICITY_disloucla_ID, & - PLASTICITY_nonlocal_ID ,& - SOURCE_thermal_dissipation_ID, & - SOURCE_thermal_externalheat_ID, & - SOURCE_damage_isoBrittle_ID, & - SOURCE_damage_isoDuctile_ID, & - SOURCE_damage_anisoBrittle_ID, & - SOURCE_damage_anisoDuctile_ID, & - KINEMATICS_cleavage_opening_ID, & - KINEMATICS_slipplane_opening_ID, & - KINEMATICS_thermal_expansion_ID, & - ELASTICITY_HOOKE_label, & - PLASTICITY_NONE_label, & - PLASTICITY_ISOTROPIC_label, & - PLASTICITY_PHENOPOWERLAW_label, & - PLASTICITY_KINEHARDENING_label, & - PLASTICITY_DISLOTWIN_label, & - PLASTICITY_DISLOUCLA_label, & - PLASTICITY_NONLOCAL_label, & - SOURCE_thermal_dissipation_label, & - SOURCE_thermal_externalheat_label, & - SOURCE_damage_isoBrittle_label, & - SOURCE_damage_isoDuctile_label, & - SOURCE_damage_anisoBrittle_label, & - SOURCE_damage_anisoDuctile_label, & - plasticState, & - sourceState - - use plastic_none - use plastic_isotropic - use plastic_phenopowerlaw - use plastic_kinehardening - use plastic_dislotwin - use plastic_disloucla - use plastic_nonlocal - use source_thermal_dissipation - use source_thermal_externalheat - use source_damage_isoBrittle - use source_damage_isoDuctile - use source_damage_anisoBrittle - use source_damage_anisoDuctile - use kinematics_cleavage_opening - use kinematics_slipplane_opening - use kinematics_thermal_expansion integer, parameter :: FILEUNIT = 204 integer :: & @@ -281,15 +239,6 @@ end subroutine constitutive_init !> ToDo: homogenizedC66 would be more consistent !-------------------------------------------------------------------------------------------------- function constitutive_homogenizedC(ipc,ip,el) - use material, only: & - phase_plasticity, & - material_phase, & - PLASTICITY_DISLOTWIN_ID, & - PLASTICITY_DISLOUCLA_ID - use plastic_dislotwin, only: & - plastic_dislotwin_homogenizedC - use lattice, only: & - lattice_C66 real(pReal), dimension(6,6) :: constitutive_homogenizedC integer, intent(in) :: & @@ -310,23 +259,6 @@ end function constitutive_homogenizedC !> @brief calls microstructure function of the different constitutive models !-------------------------------------------------------------------------------------------------- subroutine constitutive_microstructure(Fe, Fp, ipc, ip, el) - use material, only: & - phasememberAt, & - phase_plasticity, & - phase_plasticityInstance, & - material_phase, & - material_homogenizationAt, & - temperature, & - thermalMapping, & - PLASTICITY_dislotwin_ID, & - PLASTICITY_disloucla_ID, & - PLASTICITY_nonlocal_ID - use plastic_nonlocal, only: & - plastic_nonlocal_dependentState - use plastic_dislotwin, only: & - plastic_dislotwin_dependentState - use plastic_disloUCLA, only: & - plastic_disloUCLA_dependentState integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -366,35 +298,6 @@ end subroutine constitutive_microstructure !-------------------------------------------------------------------------------------------------- subroutine constitutive_LpAndItsTangents(Lp, dLp_dS, dLp_dFi, & S, Fi, ipc, ip, el) - use material, only: & - phasememberAt, & - phase_plasticity, & - phase_plasticityInstance, & - material_phase, & - material_homogenizationAt, & - temperature, & - thermalMapping, & - PLASTICITY_NONE_ID, & - PLASTICITY_ISOTROPIC_ID, & - PLASTICITY_PHENOPOWERLAW_ID, & - PLASTICITY_KINEHARDENING_ID, & - PLASTICITY_DISLOTWIN_ID, & - PLASTICITY_DISLOUCLA_ID, & - PLASTICITY_NONLOCAL_ID - use mesh, only: & - mesh_ipVolume - use plastic_isotropic, only: & - plastic_isotropic_LpAndItsTangent - use plastic_phenopowerlaw, only: & - plastic_phenopowerlaw_LpAndItsTangent - use plastic_kinehardening, only: & - plastic_kinehardening_LpAndItsTangent - use plastic_dislotwin, only: & - plastic_dislotwin_LpAndItsTangent - use plastic_disloucla, only: & - plastic_disloucla_LpAndItsTangent - use plastic_nonlocal, only: & - plastic_nonlocal_LpAndItsTangent integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -475,26 +378,6 @@ end subroutine constitutive_LpAndItsTangents !-------------------------------------------------------------------------------------------------- subroutine constitutive_LiAndItsTangents(Li, dLi_dS, dLi_dFi, & S, Fi, ipc, ip, el) - use material, only: & - phasememberAt, & - phase_plasticity, & - phase_plasticityInstance, & - phase_plasticity, & - material_phase, & - phase_kinematics, & - phase_Nkinematics, & - PLASTICITY_isotropic_ID, & - KINEMATICS_cleavage_opening_ID, & - KINEMATICS_slipplane_opening_ID, & - KINEMATICS_thermal_expansion_ID - use plastic_isotropic, only: & - plastic_isotropic_LiAndItsTangent - use kinematics_cleavage_opening, only: & - kinematics_cleavage_opening_LiAndItsTangent - use kinematics_slipplane_opening, only: & - kinematics_slipplane_opening_LiAndItsTangent - use kinematics_thermal_expansion, only: & - kinematics_thermal_expansion_LiAndItsTangent integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -573,16 +456,6 @@ end subroutine constitutive_LiAndItsTangents !> @brief collects initial intermediate deformation gradient !-------------------------------------------------------------------------------------------------- pure function constitutive_initialFi(ipc, ip, el) - use material, only: & - material_phase, & - material_homogenizationAt, & - thermalMapping, & - phase_kinematics, & - phase_Nkinematics, & - material_phase, & - KINEMATICS_thermal_expansion_ID - use kinematics_thermal_expansion, only: & - kinematics_thermal_expansion_initialStrain integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -644,14 +517,6 @@ end subroutine constitutive_SandItsTangents !-------------------------------------------------------------------------------------------------- subroutine constitutive_hooke_SandItsTangents(S, dS_dFe, dS_dFi, & Fe, Fi, ipc, ip, el) - use material, only: & - material_phase, & - material_homogenizationAt, & - phase_NstiffnessDegradations, & - phase_stiffnessDegradation, & - damage, & - damageMapping, & - STIFFNESS_DEGRADATION_damage_ID integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -700,54 +565,6 @@ end subroutine constitutive_hooke_SandItsTangents !> @brief contains the constitutive equation for calculating the rate of change of microstructure !-------------------------------------------------------------------------------------------------- subroutine constitutive_collectDotState(S, FeArray, Fi, FpArray, subdt, ipc, ip, el) - use debug, only: & - debug_level, & - debug_constitutive, & - debug_levelBasic - use mesh, only: & - theMesh - use material, only: & - phasememberAt, & - phase_plasticityInstance, & - phase_plasticity, & - phase_source, & - phase_Nsources, & - material_phase, & - material_homogenizationAt, & - temperature, & - thermalMapping, & - homogenization_maxNgrains, & - PLASTICITY_none_ID, & - PLASTICITY_isotropic_ID, & - PLASTICITY_phenopowerlaw_ID, & - PLASTICITY_kinehardening_ID, & - PLASTICITY_dislotwin_ID, & - PLASTICITY_disloucla_ID, & - PLASTICITY_nonlocal_ID, & - SOURCE_damage_isoDuctile_ID, & - SOURCE_damage_anisoBrittle_ID, & - SOURCE_damage_anisoDuctile_ID, & - SOURCE_thermal_externalheat_ID - use plastic_isotropic, only: & - plastic_isotropic_dotState - use plastic_phenopowerlaw, only: & - plastic_phenopowerlaw_dotState - use plastic_kinehardening, only: & - plastic_kinehardening_dotState - use plastic_dislotwin, only: & - plastic_dislotwin_dotState - use plastic_disloucla, only: & - plastic_disloucla_dotState - use plastic_nonlocal, only: & - plastic_nonlocal_dotState - use source_damage_isoDuctile, only: & - source_damage_isoDuctile_dotState - use source_damage_anisoBrittle, only: & - source_damage_anisoBrittle_dotState - use source_damage_anisoDuctile, only: & - source_damage_anisoDuctile_dotState - use source_thermal_externalheat, only: & - source_thermal_externalheat_dotState integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -835,26 +652,6 @@ end subroutine constitutive_collectDotState !> will return false if delta state is not needed/supported by the constitutive model !-------------------------------------------------------------------------------------------------- subroutine constitutive_collectDeltaState(S, Fe, Fi, ipc, ip, el) - use debug, only: & - debug_level, & - debug_constitutive, & - debug_levelBasic - use material, only: & - phasememberAt, & - phase_plasticityInstance, & - phase_plasticity, & - phase_source, & - phase_Nsources, & - material_phase, & - PLASTICITY_KINEHARDENING_ID, & - PLASTICITY_NONLOCAL_ID, & - SOURCE_damage_isoBrittle_ID - use plastic_kinehardening, only: & - plastic_kinehardening_deltaState - use plastic_nonlocal, only: & - plastic_nonlocal_deltaState - use source_damage_isoBrittle, only: & - source_damage_isoBrittle_deltaState integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -903,49 +700,6 @@ end subroutine constitutive_collectDeltaState !> @brief returns array of constitutive results !-------------------------------------------------------------------------------------------------- function constitutive_postResults(S, Fi, ipc, ip, el) - use material, only: & - phasememberAt, & - phase_plasticityInstance, & - plasticState, & - sourceState, & - phase_plasticity, & - phase_source, & - phase_Nsources, & - material_phase, & - material_homogenizationAt, & - temperature, & - thermalMapping, & - PLASTICITY_NONE_ID, & - PLASTICITY_ISOTROPIC_ID, & - PLASTICITY_PHENOPOWERLAW_ID, & - PLASTICITY_KINEHARDENING_ID, & - PLASTICITY_DISLOTWIN_ID, & - PLASTICITY_DISLOUCLA_ID, & - PLASTICITY_NONLOCAL_ID, & - SOURCE_damage_isoBrittle_ID, & - SOURCE_damage_isoDuctile_ID, & - SOURCE_damage_anisoBrittle_ID, & - SOURCE_damage_anisoDuctile_ID - use plastic_isotropic, only: & - plastic_isotropic_postResults - use plastic_phenopowerlaw, only: & - plastic_phenopowerlaw_postResults - use plastic_kinehardening, only: & - plastic_kinehardening_postResults - use plastic_dislotwin, only: & - plastic_dislotwin_postResults - use plastic_disloucla, only: & - plastic_disloucla_postResults - use plastic_nonlocal, only: & - plastic_nonlocal_postResults - use source_damage_isoBrittle, only: & - source_damage_isoBrittle_postResults - use source_damage_isoDuctile, only: & - source_damage_isoDuctile_postResults - use source_damage_anisoBrittle, only: & - source_damage_anisoBrittle_postResults - use source_damage_anisoDuctile, only: & - source_damage_anisoDuctile_postResults integer, intent(in) :: & ipc, & !< component-ID of integration point @@ -1031,47 +785,18 @@ end function constitutive_postResults !> @brief writes constitutive results to HDF5 output file !-------------------------------------------------------------------------------------------------- subroutine constitutive_results - use material, only: & - PLASTICITY_ISOTROPIC_ID, & - PLASTICITY_PHENOPOWERLAW_ID, & - PLASTICITY_KINEHARDENING_ID, & - PLASTICITY_DISLOTWIN_ID, & - PLASTICITY_DISLOUCLA_ID, & - PLASTICITY_NONLOCAL_ID -#if defined(PETSc) || defined(DAMASK_HDF5) - use results - use HDF5_utilities - use config, only: & - config_name_phase => phase_name ! anticipate logical name - - use material, only: & - phase_plasticityInstance, & - material_phase_plasticity_type => phase_plasticity - - use plastic_isotropic, only: & - plastic_isotropic_results - use plastic_phenopowerlaw, only: & - plastic_phenopowerlaw_results - use plastic_kinehardening, only: & - plastic_kinehardening_results - use plastic_dislotwin, only: & - plastic_dislotwin_results - use plastic_disloUCLA, only: & - plastic_disloUCLA_results - use plastic_nonlocal, only: & - plastic_nonlocal_results integer :: p character(len=256) :: group - - do p=1,size(config_name_phase) - group = trim('current/constituent')//'/'//trim(config_name_phase(p)) +#if defined(PETSc) || defined(DAMASK_HDF5) + do p=1,size(phase_name) + group = trim('current/constituent')//'/'//trim(phase_name(p)) call HDF5_closeGroup(results_addGroup(group)) group = trim(group)//'/plastic' call HDF5_closeGroup(results_addGroup(group)) - select case(material_phase_plasticity_type(p)) + select case(phase_plasticity(p)) case(PLASTICITY_ISOTROPIC_ID) call plastic_isotropic_results(phase_plasticityInstance(p),group) diff --git a/src/results.f90 b/src/results.f90 index cee86c7da..6426ebe18 100644 --- a/src/results.f90 +++ b/src/results.f90 @@ -15,6 +15,8 @@ module results implicit none private + +#if defined(PETSc) || defined(DAMASK_HDF5) integer(HID_T), public, protected :: tempCoordinates, tempResults integer(HID_T), private :: resultsFile, currentIncID, plist_id @@ -951,5 +953,5 @@ end subroutine results_mapping_materialpoint !end subroutine HDF5_mappingCells - +#endif end module results