From 91d9c11612e25c04fe588ba5ee53fd486f4eb097 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sun, 10 Jun 2018 18:01:52 +0200 Subject: [PATCH] material.config is read in centrally moving data from material to config_material. use statements need to change. All aspects of reading from file will be removed from the individual modules --- src/CMakeLists.txt | 4 +- src/CPFEM.f90 | 6 +- src/CPFEM2.f90 | 6 +- src/config_material.f90 | 54 +++-- src/constitutive.f90 | 7 +- src/crystallite.f90 | 4 +- src/damage_local.f90 | 3 +- src/damage_none.f90 | 1 + src/damage_nonlocal.f90 | 3 +- src/homogenization.f90 | 1 + src/homogenization_RGC.f90 | 1 + src/homogenization_isostrain.f90 | 1 + src/homogenization_none.f90 | 1 + src/hydrogenflux_cahnhilliard.f90 | 3 +- src/hydrogenflux_isoconc.f90 | 1 + src/kinematics_cleavage_opening.f90 | 3 +- src/kinematics_hydrogen_strain.f90 | 3 +- src/kinematics_slipplane_opening.f90 | 3 +- src/kinematics_thermal_expansion.f90 | 3 +- src/kinematics_vacancy_strain.f90 | 3 +- src/lattice.f90 | 2 +- src/list.f90 | 17 +- src/material.f90 | 264 ++----------------------- src/plastic_disloUCLA.f90 | 5 +- src/plastic_dislotwin.f90 | 3 +- src/plastic_isotropic.f90 | 3 +- src/plastic_kinematichardening.f90 | 3 +- src/plastic_nonlocal.f90 | 2 +- src/plastic_phenopowerlaw.f90 | 3 +- src/porosity_none.f90 | 1 + src/porosity_phasefield.f90 | 11 +- src/source_damage_anisoBrittle.f90 | 5 +- src/source_damage_anisoDuctile.f90 | 5 +- src/source_damage_isoBrittle.f90 | 5 +- src/source_damage_isoDuctile.f90 | 6 +- src/source_thermal_dissipation.f90 | 5 +- src/source_thermal_externalheat.f90 | 5 +- src/source_vacancy_irradiation.f90 | 5 +- src/source_vacancy_phenoplasticity.f90 | 5 +- src/source_vacancy_thermalfluc.f90 | 5 +- src/thermal_adiabatic.f90 | 5 +- src/thermal_conduction.f90 | 3 +- src/thermal_isothermal.f90 | 1 + src/vacancyflux_cahnhilliard.f90 | 7 +- src/vacancyflux_isochempot.f90 | 3 +- src/vacancyflux_isoconc.f90 | 1 + 46 files changed, 146 insertions(+), 345 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cc29ca84f..cb39ad363 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,7 +42,7 @@ add_dependencies(CHAINED_LIST DEBUG) list(APPEND OBJECTFILES $) add_library(CONFIG_MATERIAL OBJECT "config_material.f90") -add_dependencies(CONFIG_MATERIAL DEBUG) +add_dependencies(CONFIG_MATERIAL CHAINED_LIST) list(APPEND OBJECTFILES $) add_library(FEsolving OBJECT "FEsolving.f90") @@ -68,7 +68,7 @@ elseif ("${PROJECT_NAME}" STREQUAL "DAMASK_FEM") endif() add_library(MATERIAL OBJECT "material.f90") -add_dependencies(MATERIAL MESH CHAINED_LIST) +add_dependencies(MATERIAL MESH CONFIG_MATERIAL) list(APPEND OBJECTFILES $) add_library(DAMASK_HELPERS OBJECT "lattice.f90") diff --git a/src/CPFEM.f90 b/src/CPFEM.f90 index 44146c90e..b613c73d3 100644 --- a/src/CPFEM.f90 +++ b/src/CPFEM.f90 @@ -143,7 +143,8 @@ subroutine CPFEM_init material_phase, & homogState, & phase_plasticity, & - plasticState, & + plasticState + use config_material, only: & material_Nhomogenization use crystallite, only: & crystallite_F0, & @@ -310,7 +311,8 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature_inp, dt thermal_type, & THERMAL_conduction_ID, & phase_Nsources, & - material_homog, & + material_homog + use config_material, only: & material_Nhomogenization use crystallite, only: & crystallite_partionedF,& diff --git a/src/CPFEM2.f90 b/src/CPFEM2.f90 index 09a98aaec..cd28e3420 100644 --- a/src/CPFEM2.f90 +++ b/src/CPFEM2.f90 @@ -108,7 +108,8 @@ subroutine CPFEM_init material_phase, & homogState, & phase_plasticity, & - plasticState, & + plasticState + use config_material, only: & material_Nhomogenization use crystallite, only: & crystallite_F0, & @@ -228,7 +229,8 @@ subroutine CPFEM_age() hydrogenfluxState, & material_phase, & phase_plasticity, & - phase_Nsources, & + phase_Nsources + use config_material, only: & material_Nhomogenization use crystallite, only: & crystallite_partionedF,& diff --git a/src/config_material.f90 b/src/config_material.f90 index 6bb8d81d8..61f41b2a5 100644 --- a/src/config_material.f90 +++ b/src/config_material.f90 @@ -11,8 +11,8 @@ module config_material pReal, & pInt implicit none - private - type(tPartitionedStringList), private,protected, allocatable, dimension(:) :: & + !private + type(tPartitionedStringList), public, protected, allocatable, dimension(:) :: & phaseConfig, & microstructureConfig, & homogenizationConfig, & @@ -24,7 +24,7 @@ module config_material crystallite_name, & !< name of each crystallite setting microstructure_name, & !< name of each microstructure texture_name !< name of each texture - character(len=*), parameter :: & + character(len=*), parameter, public :: & MATERIAL_partHomogenization = 'homogenization', & !< keyword for homogenization part MATERIAL_partCrystallite = 'crystallite', & !< keyword for crystallite part MATERIAL_partPhase = 'phase',& !< keyword for phase part @@ -38,6 +38,9 @@ module config_material material_Nmicrostructure, & !< number of microstructures material_Ncrystallite !< number of crystallite settings + character(len=*), parameter, public :: & + MATERIAL_configFile = 'material.config', & !< generic name for material configuration file + MATERIAL_localFileExt = 'materialConfig' !< extension of solver job name depending material configuration file contains @@ -59,14 +62,7 @@ subroutine config_material_init() use debug, only: & debug_level, & debug_material, & - debug_levelBasic, & - debug_levelExtensive - use mesh, only: & - mesh_maxNips, & - mesh_NcpElems, & - mesh_element, & - FE_Nips, & - FE_geomtype + debug_levelBasic implicit none integer(pInt), parameter :: FILEUNIT = 200_pInt @@ -83,9 +79,6 @@ subroutine config_material_init() character(len=65536) :: & line,part - character(len=*), parameter :: & - MATERIAL_configFile = 'material.config', & !< generic name for material configuration file - MATERIAL_localFileExt = 'materialConfig' !< extension of solver job name depending material configuration file myDebug = debug_level(debug_material) @@ -147,7 +140,7 @@ end subroutine config_material_init !-------------------------------------------------------------------------------------------------- !> @brief parses the homogenization part in the material configuration file !-------------------------------------------------------------------------------------------------- -subroutine parseFile(partLabel,part,fileUnit,nextLine) +subroutine parseFile(sectionNames,part,fileUnit,line) use IO, only: & IO_read, & IO_error, & @@ -160,21 +153,19 @@ subroutine parseFile(partLabel,part,fileUnit,nextLine) implicit none integer(pInt), intent(in) :: fileUnit - + character(len=*), dimension(:), allocatable, intent(inout) :: sectionNames + type(tPartitionedStringList), allocatable, dimension(:), intent(inout) :: part + character(len=65536),intent(out) :: line integer(pInt), allocatable, dimension(:) :: chunkPos - integer(pInt) :: Nsections, h - character(len=65536) :: line, tag,devNull - character(len=65536) :: nextLine - character(len=64) :: tag2 + integer(pInt) :: Nsections, s + character(len=65536) :: devNull + character(len=64) :: tag logical :: echo - type(tPartitionedStringList), allocatable, dimension(:), intent(inout) :: & - part - character(len=*), dimension(:), allocatable, intent(inout) :: partLabel allocate(part(0)) - h = 0_pInt + s = 0_pInt do while (trim(line) /= IO_EOF) ! read through sections of material part line = IO_read(fileUnit) if (IO_isBlank(line)) cycle ! skip empty lines @@ -183,20 +174,19 @@ subroutine parseFile(partLabel,part,fileUnit,nextLine) exit endif foundNextPart nextSection: if (IO_getTag(line,'[',']') /= '') then - h = h + 1_pInt + s = s + 1_pInt part = [part, emptyList] - tag2 = IO_getTag(line,'[',']') - GfortranBug86033: if (.not. allocated(partLabel)) then - allocate(partLabel(1),source=tag2) + tag = IO_getTag(line,'[',']') + GfortranBug86033: if (.not. allocated(sectionNames)) then + allocate(sectionNames(1),source=tag) else GfortranBug86033 - partLabel = [partLabel,tag2] + sectionNames = [sectionNames,tag] endif GfortranBug86033 endif nextSection chunkPos = IO_stringPos(line) tag = IO_lc(IO_stringValue(trim(line),chunkPos,1_pInt)) ! extract key - inSection: if (h > 0_pInt) then - chunkPos = IO_stringPos(line) - call part(h)%add(IO_lc(trim(line))) + inSection: if (s > 0_pInt) then + call part(s)%add(IO_lc(trim(line))) else inSection echo = (trim(tag) == '/echo/') endif inSection diff --git a/src/constitutive.f90 b/src/constitutive.f90 index 75906c380..400670ce6 100644 --- a/src/constitutive.f90 +++ b/src/constitutive.f90 @@ -59,12 +59,13 @@ subroutine constitutive_init() IO_timeStamp use mesh, only: & FE_geomtype - use material, only: & - material_phase, & + use config_material, only: & material_Nphase, & material_localFileExt, & - material_configFile, & phase_name, & + material_configFile + use material, only: & + material_phase, & phase_plasticity, & phase_plasticityInstance, & phase_Nsources, & diff --git a/src/crystallite.f90 b/src/crystallite.f90 index dd166fe4c..6b348a142 100644 --- a/src/crystallite.f90 +++ b/src/crystallite.f90 @@ -171,6 +171,7 @@ subroutine crystallite_init IO_write_jobFile, & IO_error use material + use config_material use constitutive, only: & constitutive_initialFi, & constitutive_microstructure ! derived (shortcut) quantities of given state @@ -1236,8 +1237,9 @@ subroutine crystallite_integrateStateRK4() plasticState, & sourceState, & phase_Nsources, & - material_Nphase, & phaseAt, phasememberAt + use config_material, only: & + material_Nphase use constitutive, only: & constitutive_collectDotState, & constitutive_microstructure diff --git a/src/damage_local.f90 b/src/damage_local.f90 index 59956e7d1..f95a2956f 100644 --- a/src/damage_local.f90 +++ b/src/damage_local.f90 @@ -70,7 +70,8 @@ subroutine damage_local_init(fileUnit) damageState, & damageMapping, & damage, & - damage_initialPhi, & + damage_initialPhi + use config_material, only: & material_partHomogenization implicit none diff --git a/src/damage_none.f90 b/src/damage_none.f90 index a1f0f0cd5..a3a1adde5 100644 --- a/src/damage_none.f90 +++ b/src/damage_none.f90 @@ -26,6 +26,7 @@ subroutine damage_none_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: & diff --git a/src/damage_nonlocal.f90 b/src/damage_nonlocal.f90 index 92ad183e1..6c556bb25 100644 --- a/src/damage_nonlocal.f90 +++ b/src/damage_nonlocal.f90 @@ -75,7 +75,8 @@ subroutine damage_nonlocal_init(fileUnit) damageState, & damageMapping, & damage, & - damage_initialPhi, & + damage_initialPhi + use config_material, only: & material_partHomogenization implicit none diff --git a/src/homogenization.f90 b/src/homogenization.f90 index 14ffdcdd6..6539b19a9 100644 --- a/src/homogenization.f90 +++ b/src/homogenization.f90 @@ -101,6 +101,7 @@ subroutine homogenization_init crystallite_maxSizePostResults #endif use material + use config_material use homogenization_none use homogenization_isostrain use homogenization_RGC diff --git a/src/homogenization_RGC.f90 b/src/homogenization_RGC.f90 index 95dab049f..c48866dfe 100644 --- a/src/homogenization_RGC.f90 +++ b/src/homogenization_RGC.f90 @@ -100,6 +100,7 @@ subroutine homogenization_RGC_init(fileUnit) FE_geomtype use IO use material + use config_material implicit none integer(pInt), intent(in) :: fileUnit !< file pointer to material configuration diff --git a/src/homogenization_isostrain.f90 b/src/homogenization_isostrain.f90 index b569e3737..4c80059eb 100644 --- a/src/homogenization_isostrain.f90 +++ b/src/homogenization_isostrain.f90 @@ -62,6 +62,7 @@ subroutine homogenization_isostrain_init(fileUnit) debug_levelBasic use IO use material + use config_material implicit none integer(pInt), intent(in) :: fileUnit diff --git a/src/homogenization_none.f90 b/src/homogenization_none.f90 index b2d2f52a7..90d2ab6c4 100644 --- a/src/homogenization_none.f90 +++ b/src/homogenization_none.f90 @@ -29,6 +29,7 @@ subroutine homogenization_none_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: & diff --git a/src/hydrogenflux_cahnhilliard.f90 b/src/hydrogenflux_cahnhilliard.f90 index 569be97dc..95898c86d 100644 --- a/src/hydrogenflux_cahnhilliard.f90 +++ b/src/hydrogenflux_cahnhilliard.f90 @@ -81,7 +81,8 @@ subroutine hydrogenflux_cahnhilliard_init(fileUnit) hydrogenfluxMapping, & hydrogenConc, & hydrogenConcRate, & - hydrogenflux_initialCh, & + hydrogenflux_initialCh + use config_material, only: & material_partHomogenization, & material_partPhase diff --git a/src/hydrogenflux_isoconc.f90 b/src/hydrogenflux_isoconc.f90 index d1b13aa76..74505fad8 100644 --- a/src/hydrogenflux_isoconc.f90 +++ b/src/hydrogenflux_isoconc.f90 @@ -27,6 +27,7 @@ subroutine hydrogenflux_isoconc_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: & diff --git a/src/kinematics_cleavage_opening.f90 b/src/kinematics_cleavage_opening.f90 index 74af0a52d..64641f150 100644 --- a/src/kinematics_cleavage_opening.f90 +++ b/src/kinematics_cleavage_opening.f90 @@ -78,7 +78,8 @@ subroutine kinematics_cleavage_opening_init(fileUnit) phase_Nkinematics, & phase_Noutput, & KINEMATICS_cleavage_opening_label, & - KINEMATICS_cleavage_opening_ID, & + KINEMATICS_cleavage_opening_ID + use config_material, only: & material_Nphase, & MATERIAL_partPhase use lattice, only: & diff --git a/src/kinematics_hydrogen_strain.f90 b/src/kinematics_hydrogen_strain.f90 index f3ea4df38..d0c282627 100644 --- a/src/kinematics_hydrogen_strain.f90 +++ b/src/kinematics_hydrogen_strain.f90 @@ -68,7 +68,8 @@ subroutine kinematics_hydrogen_strain_init(fileUnit) phase_Nkinematics, & phase_Noutput, & KINEMATICS_hydrogen_strain_label, & - KINEMATICS_hydrogen_strain_ID, & + KINEMATICS_hydrogen_strain_ID + use config_material, only: & material_Nphase, & MATERIAL_partPhase diff --git a/src/kinematics_slipplane_opening.f90 b/src/kinematics_slipplane_opening.f90 index ba38ac05b..9f20d8594 100644 --- a/src/kinematics_slipplane_opening.f90 +++ b/src/kinematics_slipplane_opening.f90 @@ -78,7 +78,8 @@ subroutine kinematics_slipplane_opening_init(fileUnit) phase_Nkinematics, & phase_Noutput, & KINEMATICS_slipplane_opening_label, & - KINEMATICS_slipplane_opening_ID, & + KINEMATICS_slipplane_opening_ID + use config_material, only: & material_Nphase, & MATERIAL_partPhase use lattice, only: & diff --git a/src/kinematics_thermal_expansion.f90 b/src/kinematics_thermal_expansion.f90 index 0de483d70..bc70d57b2 100644 --- a/src/kinematics_thermal_expansion.f90 +++ b/src/kinematics_thermal_expansion.f90 @@ -68,7 +68,8 @@ subroutine kinematics_thermal_expansion_init(fileUnit) phase_Nkinematics, & phase_Noutput, & KINEMATICS_thermal_expansion_label, & - KINEMATICS_thermal_expansion_ID, & + KINEMATICS_thermal_expansion_ID + use config_material, only: & material_Nphase, & MATERIAL_partPhase diff --git a/src/kinematics_vacancy_strain.f90 b/src/kinematics_vacancy_strain.f90 index 227a86e0c..7ee8312dc 100644 --- a/src/kinematics_vacancy_strain.f90 +++ b/src/kinematics_vacancy_strain.f90 @@ -68,7 +68,8 @@ subroutine kinematics_vacancy_strain_init(fileUnit) phase_Nkinematics, & phase_Noutput, & KINEMATICS_vacancy_strain_label, & - KINEMATICS_vacancy_strain_ID, & + KINEMATICS_vacancy_strain_ID + use config_material, only: & material_Nphase, & MATERIAL_partPhase diff --git a/src/lattice.f90 b/src/lattice.f90 index 37393b82e..374057381 100644 --- a/src/lattice.f90 +++ b/src/lattice.f90 @@ -1263,7 +1263,7 @@ subroutine lattice_init IO_stringPos, & IO_stringValue, & IO_floatValue - use material, only: & + use config_material, only: & material_configfile, & material_localFileExt, & material_partPhase diff --git a/src/list.f90 b/src/list.f90 index 86c24eb86..9bb93a81b 100644 --- a/src/list.f90 +++ b/src/list.f90 @@ -49,7 +49,7 @@ subroutine add(this,string) IO_stringPos implicit none - class(tPartitionedStringList) :: this + class(tPartitionedStringList), target :: this character(len=*), intent(in) :: string integer(pInt), allocatable,dimension(:) :: p @@ -61,14 +61,11 @@ subroutine add(this,string) new%string%val=trim(string) new%string%pos=IO_stringPos(trim(string)) - if (.not. associated(this%next)) then - this%next => new - else - tmp => this%next - this%next => new - this%next%next => tmp - !new%prev => this%prev%next - end if + tmp => this + do while (associated(tmp%next)) + tmp => tmp%next + enddo + tmp%next => new end subroutine add @@ -85,7 +82,7 @@ subroutine show(this) tmp => this%next do if (.not. associated(tmp)) exit - write(6,*) trim(tmp%string%val) + write(6,'(a)') trim(tmp%string%val) tmp => tmp%next end do diff --git a/src/material.f90 b/src/material.f90 index dc70304fa..f7a4b29ef 100644 --- a/src/material.f90 +++ b/src/material.f90 @@ -7,6 +7,7 @@ !! 'phase', 'texture', and 'microstucture' !-------------------------------------------------------------------------------------------------- module material + use config_material use chained_list use prec, only: & pReal, & @@ -142,15 +143,6 @@ module material HOMOGENIZATION_rgc_ID end enum - character(len=*), parameter, public :: & - MATERIAL_configFile = 'material.config', & !< generic name for material configuration file - MATERIAL_localFileExt = 'materialConfig' !< extension of solver job name depending material configuration file - - character(len=*), parameter, public :: & - MATERIAL_partHomogenization = 'homogenization', & !< keyword for homogenization part - MATERIAL_partCrystallite = 'crystallite', & !< keyword for crystallite part - MATERIAL_partPhase = 'phase' !< keyword for phase part - integer(kind(ELASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: & phase_elasticity !< elasticity of each phase integer(kind(PLASTICITY_undefined_ID)), dimension(:), allocatable, public, protected :: & @@ -174,17 +166,8 @@ module material integer(kind(HOMOGENIZATION_undefined_ID)), dimension(:), allocatable, public, protected :: & homogenization_type !< type of each homogenization - character(len=64), dimension(:), allocatable, public, protected :: & - phase_name, & !< name of each phase - homogenization_name, & !< name of each homogenization - crystallite_name !< name of each crystallite setting - integer(pInt), public, protected :: & - homogenization_maxNgrains, & !< max number of grains in any USED homogenization - material_Nphase, & !< number of phases - material_Nhomogenization, & !< number of homogenizations - material_Nmicrostructure, & !< number of microstructures - material_Ncrystallite !< number of crystallite settings + homogenization_maxNgrains !< max number of grains in any USED homogenization integer(pInt), dimension(:), allocatable, public, protected :: & phase_Nsources, & !< number of source mechanisms active in each phase @@ -243,19 +226,10 @@ module material phase_localPlasticity !< flags phases with local constitutive law - character(len=*), parameter, private :: & - MATERIAL_partMicrostructure = 'microstructure', & !< keyword for microstructure part - MATERIAL_partTexture = 'texture' !< keyword for texture part - - character(len=64), dimension(:), allocatable, private :: & - microstructure_name, & !< name of each microstructure - texture_name !< name of each texture - character(len=256), dimension(:), allocatable, private :: & texture_ODFfile !< name of each ODF file integer(pInt), private :: & - material_Ntexture, & !< number of textures microstructure_maxNconstituents, & !< max number of constituents in any phase texture_maxNgauss, & !< max number of Gauss components in any texture texture_maxNfiber !< max number of Fiber components in any texture @@ -305,13 +279,6 @@ module material vacancyConcRate, & !< vacancy conc change field hydrogenConcRate !< hydrogen conc change field - type(tPartitionedStringList), public,protected, allocatable, dimension(:) :: & - phaseConfig, & - microstructureConfig, & - homogenizationConfig, & - textureConfig, & - crystalliteConfig - public :: & material_init, & ELASTICITY_hooke_ID ,& @@ -419,43 +386,21 @@ subroutine material_init() write(6,'(a15,a)') ' Current time: ',IO_timeStamp() #include "compilation_info.f90" - if (.not. IO_open_jobFile_stat(FILEUNIT,material_localFileExt)) & ! no local material configuration present... - call IO_open_file(FILEUNIT,material_configFile) ! ...open material.config file - - rewind(fileUnit) - line = '' ! to have it initialized - do while (trim(line) /= IO_EOF) - part = IO_lc(IO_getTag(line,'<','>')) - - select case (trim(part)) - - case (trim(material_partPhase)) - line = material_parsePhase(FILEUNIT) + call material_parsePhase() if (iand(myDebug,debug_levelBasic) /= 0_pInt) write(6,'(a)') ' Phase parsed'; flush(6) - case (trim(material_partMicrostructure)) - line = material_parseMicrostructure(FILEUNIT) + call material_parseMicrostructure() if (iand(myDebug,debug_levelBasic) /= 0_pInt) write(6,'(a)') ' Microstructure parsed'; flush(6) - case (trim(material_partCrystallite)) - line = material_parseCrystallite(FILEUNIT) + call material_parseCrystallite() if (iand(myDebug,debug_levelBasic) /= 0_pInt) write(6,'(a)') ' Crystallite parsed'; flush(6) - case (trim(material_partHomogenization)) - line = material_parseHomogenization(FILEUNIT) + call material_parseHomogenization() if (iand(myDebug,debug_levelBasic) /= 0_pInt) write(6,'(a)') ' Homogenization parsed'; flush(6) - case (trim(material_partTexture)) - line = material_parseTexture(FILEUNIT) + call material_parseTexture() if (iand(myDebug,debug_levelBasic) /= 0_pInt) write(6,'(a)') ' Texture parsed'; flush(6) - case default - line = IO_read(fileUnit) - - end select - - enddo - allocate(plasticState (material_Nphase)) allocate(sourceState (material_Nphase)) do myPhase = 1,material_Nphase @@ -571,7 +516,9 @@ end subroutine material_init !-------------------------------------------------------------------------------------------------- !> @brief parses the homogenization part in the material configuration file !-------------------------------------------------------------------------------------------------- -character(len=65536) function material_parseHomogenization(fileUnit) +subroutine material_parseHomogenization + use config_material, only : & + homogenizationConfig use IO, only: & IO_read, & IO_globalTagInPart, & @@ -590,7 +537,6 @@ character(len=65536) function material_parseHomogenization(fileUnit) mesh_element implicit none - integer(pInt), intent(in) :: fileUnit integer(pInt), allocatable, dimension(:) :: chunkPos @@ -598,40 +544,6 @@ character(len=65536) function material_parseHomogenization(fileUnit) character(len=65536) :: line, tag,devNull character(len=64) :: tag2 logical :: echo - - allocate(homogenizationConfig(0)) - - h = 0_pInt - do while (trim(line) /= IO_EOF) ! read through sections of material part - line = IO_read(fileUnit) - if (IO_isBlank(line)) cycle ! skip empty lines - foundNextPart: if (IO_getTag(line,'<','>') /= '') then - devNull = IO_read(fileUnit, .true.) ! reset IO_read - exit - endif foundNextPart - nextSection: if (IO_getTag(line,'[',']') /= '') then - h = h + 1_pInt - homogenizationConfig = [homogenizationConfig, emptyList] - tag2 = IO_getTag(line,'[',']') - GfortranBug86033: if (.not. allocated(homogenization_name)) then - allocate(homogenization_name(1),source=tag2) - else GfortranBug86033 - homogenization_name = [homogenization_name,tag2] - endif GfortranBug86033 - endif nextSection - chunkPos = IO_stringPos(line) - tag = IO_lc(IO_stringValue(trim(line),chunkPos,1_pInt)) ! extract key - inSection: if (h > 0_pInt) then - call homogenizationConfig(h)%add(line) - else inSection - echo = (trim(tag) == '/echo/') - endif inSection - enddo - - if (echo) call homogenizationConfig(1)%show() - - material_Nhomogenization = size(homogenizationConfig) - if (material_Nhomogenization < 1_pInt) call IO_error(160_pInt,ext_msg=material_partHomogenization) allocate(homogenization_type(material_Nhomogenization), source=HOMOGENIZATION_undefined_ID) allocate(thermal_type(material_Nhomogenization), source=THERMAL_isothermal_ID) @@ -760,15 +672,14 @@ endif enddo homogenization_maxNgrains = maxval(homogenization_Ngrains,homogenization_active) - material_parseHomogenization=line -end function material_parseHomogenization +end subroutine material_parseHomogenization !-------------------------------------------------------------------------------------------------- !> @brief parses the microstructure part in the material configuration file !-------------------------------------------------------------------------------------------------- -character(len=65536) function material_parseMicrostructure(fileUnit) +subroutine material_parseMicrostructure use prec, only: & dNeq use IO @@ -777,8 +688,6 @@ character(len=65536) function material_parseMicrostructure(fileUnit) mesh_NcpElems implicit none - integer(pInt), intent(in) :: fileUnit - character(len=256), dimension(:), allocatable :: & str character(len=64) :: tag2 @@ -789,40 +698,10 @@ character(len=65536) function material_parseMicrostructure(fileUnit) tag,line,devNull logical :: echo - allocate(MicrostructureConfig(0)) line = '' ! to have it initialized m = 0_pInt echo =.false. - do while (trim(line) /= IO_EOF) ! read through sections of material part - line = IO_read(fileUnit) - if (IO_isBlank(line)) cycle ! skip empty lines - foundNextPart: if (IO_getTag(line,'<','>') /= '') then - devNull = IO_read(fileUnit, .true.) ! reset IO_read - exit - endif foundNextPart - nextSection: if (IO_getTag(line,'[',']') /= '') then - m = m + 1_pInt - microstructureConfig = [microstructureConfig, emptyList] - tag2 = IO_getTag(line,'[',']') - GfortranBug86033: if (.not. allocated(microstructure_name)) then - allocate(microstructure_name(1),source=tag2) - else GfortranBug86033 - microstructure_name = [microstructure_name,tag2] - endif GfortranBug86033 - endif nextSection - chunkPos = IO_stringPos(line) - tag = IO_lc(IO_stringValue(trim(line),chunkPos,1_pInt)) ! extract key - inSection: if (m > 0_pInt) then - chunkPos = IO_stringPos(line) - call microstructureConfig(m)%add(IO_lc(line)) - else inSection - echo = (trim(tag) == '/echo/') - endif inSection - enddo - - material_Nmicrostructure = size(microstructureConfig) - if (material_Nmicrostructure < 1_pInt) call IO_error(160_pInt,ext_msg=material_partMicrostructure) allocate(microstructure_crystallite(material_Nmicrostructure), source=0_pInt) allocate(microstructure_Nconstituents(material_Nmicrostructure), source=0_pInt) @@ -871,14 +750,13 @@ enddo call IO_error(153_pInt,ext_msg=microstructure_name(m)) enddo - material_parseMicrostructure = line -end function material_parseMicrostructure +end subroutine material_parseMicrostructure !-------------------------------------------------------------------------------------------------- !> @brief parses the crystallite part in the material configuration file !-------------------------------------------------------------------------------------------------- -character(len=65536) function material_parseCrystallite(fileUnit) +subroutine material_parseCrystallite use IO, only: & IO_read, & IO_error, & @@ -890,7 +768,6 @@ character(len=65536) function material_parseCrystallite(fileUnit) IO_EOF implicit none - integer(pInt), intent(in) :: fileUnit integer(pInt), allocatable, dimension(:) :: chunkPos character(len=64) :: tag2 @@ -898,53 +775,18 @@ character(len=65536) function material_parseCrystallite(fileUnit) character(len=65536) :: line, tag,devNull logical :: echo - allocate(crystalliteConfig(0)) - c = 0_pInt - do while (trim(line) /= IO_EOF) ! read through sections of material part - line = IO_read(fileUnit) - if (IO_isBlank(line)) cycle ! skip empty lines - foundNextPart: if (IO_getTag(line,'<','>') /= '') then - devNull = IO_read(fileUnit, .true.) ! reset IO_read - exit - endif foundNextPart - nextSection: if (IO_getTag(line,'[',']') /= '') then - c = c + 1_pInt - crystalliteConfig = [crystalliteConfig, emptyList] - tag2 = IO_getTag(line,'[',']') - GfortranBug86033: if (.not. allocated(crystallite_name)) then - allocate(crystallite_name(1),source=tag2) - else GfortranBug86033 - crystallite_name = [crystallite_name,tag2] - endif GfortranBug86033 - endif nextSection - chunkPos = IO_stringPos(line) - tag = IO_lc(IO_stringValue(trim(line),chunkPos,1_pInt)) ! extract key - inSection: if (c > 0_pInt) then - chunkPos = IO_stringPos(trim(line)) - call crystalliteConfig(c)%add(IO_lc(line)) - else inSection - echo = (trim(tag) == '/echo/') - endif inSection - enddo - - material_Ncrystallite = size(crystalliteConfig) - if (material_Ncrystallite < 1_pInt) call IO_error(160_pInt,ext_msg=material_partCrystallite) - allocate(crystallite_Noutput(material_Ncrystallite), source=0_pInt) do c=1_pInt, material_Ncrystallite crystallite_Noutput(c) = crystalliteConfig(c)%countKeys('(output)') enddo - material_parseCrystallite = line -end function material_parseCrystallite +end subroutine material_parseCrystallite !-------------------------------------------------------------------------------------------------- !> @brief parses the phase part in the material configuration file !-------------------------------------------------------------------------------------------------- -character(len=65536) function material_parsePhase(fileUnit) - use chained_list, only: & - emptyList +subroutine material_parsePhase use IO, only: & IO_read, & IO_globalTagInPart, & @@ -960,7 +802,6 @@ character(len=65536) function material_parsePhase(fileUnit) IO_EOF implicit none - integer(pInt), intent(in) :: fileUnit integer(pInt), allocatable, dimension(:) :: chunkPos @@ -972,41 +813,10 @@ character(len=65536) function material_parsePhase(fileUnit) str logical :: echo - allocate(phaseConfig(0)) line = '' ! to have it initialized p = 0_pInt ! - " - echo =.false. - do while (trim(line) /= IO_EOF) ! read through sections of material part - line = IO_read(fileUnit) - if (IO_isBlank(line)) cycle ! skip empty lines - foundNextPart: if (IO_getTag(line,'<','>') /= '') then - devNull = IO_read(fileUnit, .true.) ! reset IO_read - exit - endif foundNextPart - nextSection: if (IO_getTag(line,'[',']') /= '') then - p = p + 1_pInt - phaseConfig = [phaseConfig, emptyList] - tag2 = IO_getTag(line,'[',']') - GfortranBug86033: if (.not. allocated(phase_name)) then - allocate(phase_name(1),source=tag2) - else GfortranBug86033 - phase_name = [phase_name,tag2] - endif GfortranBug86033 - endif nextSection - chunkPos = IO_stringPos(line) - tag = IO_lc(IO_stringValue(trim(line),chunkPos,1_pInt)) ! extract key - inSection: if (p > 0_pInt) then - chunkPos = IO_stringPos(line) - call phaseConfig(p)%add(IO_lc(trim(line))) - else inSection - echo = (trim(tag) == '/echo/') - endif inSection - enddo - - material_Nphase = size(phaseConfig) - if (material_Nphase < 1_pInt) call IO_error(160_pInt,ext_msg=material_partPhase) - allocate(phase_elasticity(material_Nphase),source=ELASTICITY_undefined_ID) allocate(phase_plasticity(material_Nphase),source=PLASTICITY_undefined_ID) allocate(phase_Nsources(material_Nphase), source=0_pInt) @@ -1118,13 +928,12 @@ character(len=65536) function material_parsePhase(fileUnit) phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p)) enddo - material_parsePhase = line -end function material_parsePhase +end subroutine material_parsePhase !-------------------------------------------------------------------------------------------------- !> @brief parses the texture part in the material configuration file !-------------------------------------------------------------------------------------------------- -character(len=65536) function material_parseTexture(fileUnit) +subroutine material_parseTexture use prec, only: & dNeq use IO, only: & @@ -1149,7 +958,6 @@ character(len=65536) function material_parseTexture(fileUnit) math_inv33 implicit none - integer(pInt), intent(in) :: fileUnit integer(pInt), allocatable, dimension(:) :: chunkPos @@ -1160,39 +968,6 @@ character(len=65536) function material_parseTexture(fileUnit) character(len=65536) :: line, tag,devNull, line2 - allocate(textureConfig(0)) - - t = 0_pInt - do while (trim(line2) /= IO_EOF) ! read through sections of material part - line2 = IO_read(fileUnit) - if (IO_isBlank(line2)) cycle ! skip empty lines - foundNextPart: if (IO_getTag(line2,'<','>') /= '') then - devNull = IO_read(fileUnit, .true.) ! reset IO_read - exit - endif foundNextPart - nextSection: if (IO_getTag(line2,'[',']') /= '') then - t = t + 1_pInt - textureConfig = [textureConfig, emptyList] - tag2 = IO_getTag(line2,'[',']') - GfortranBug86033: if (.not. allocated(texture_name)) then - allocate(texture_name(1),source=tag2) - else GfortranBug86033 - texture_name = [texture_name,tag2] - endif GfortranBug86033 - endif nextSection - chunkPos = IO_stringPos(line2) - tag = IO_lc(IO_stringValue(trim(line2),chunkPos,1_pInt)) ! extract key - inSection: if (t > 0_pInt) then - chunkPos = IO_stringPos(line2) - call textureConfig(t)%add(IO_lc(trim(line2))) - else inSection - echo = (trim(tag) == '/echo/') - endif inSection - enddo - - material_Ntexture = size(textureConfig) - if (material_Ntexture < 1_pInt) call IO_error(160_pInt,ext_msg=material_partTexture) - allocate(texture_ODFfile(material_Ntexture)); texture_ODFfile='' allocate(texture_symmetry(material_Ntexture), source=1_pInt) allocate(texture_Ngauss(material_Ntexture), source=0_pInt) @@ -1316,8 +1091,7 @@ character(len=65536) function material_parseTexture(fileUnit) enddo lines enddo - material_parseTexture = line2 -end function material_parseTexture +end subroutine material_parseTexture !-------------------------------------------------------------------------------------------------- diff --git a/src/plastic_disloUCLA.f90 b/src/plastic_disloUCLA.f90 index 514652397..f010b3a00 100644 --- a/src/plastic_disloUCLA.f90 +++ b/src/plastic_disloUCLA.f90 @@ -151,8 +151,9 @@ subroutine plastic_disloUCLA_init(fileUnit) phase_Noutput, & PLASTICITY_DISLOUCLA_label, & PLASTICITY_DISLOUCLA_ID, & - material_phase, & - plasticState, & + material_phase, & + plasticState + use config_material, only: & MATERIAL_partPhase use lattice use numerics,only: & diff --git a/src/plastic_dislotwin.f90 b/src/plastic_dislotwin.f90 index e0da954a6..46f833a7f 100644 --- a/src/plastic_dislotwin.f90 +++ b/src/plastic_dislotwin.f90 @@ -239,7 +239,8 @@ subroutine plastic_dislotwin_init(fileUnit) PLASTICITY_DISLOTWIN_label, & PLASTICITY_DISLOTWIN_ID, & material_phase, & - plasticState, & + plasticState + use config_material, only: & MATERIAL_partPhase use lattice use numerics,only: & diff --git a/src/plastic_isotropic.f90 b/src/plastic_isotropic.f90 index eb3120562..916f43ebd 100644 --- a/src/plastic_isotropic.f90 +++ b/src/plastic_isotropic.f90 @@ -97,7 +97,8 @@ use IO PLASTICITY_ISOTROPIC_label, & PLASTICITY_ISOTROPIC_ID, & material_phase, & - plasticState, & + plasticState + use config_material, only: & MATERIAL_partPhase, & phaseConfig diff --git a/src/plastic_kinematichardening.f90 b/src/plastic_kinematichardening.f90 index c33a14db6..09eebe460 100644 --- a/src/plastic_kinematichardening.f90 +++ b/src/plastic_kinematichardening.f90 @@ -145,7 +145,8 @@ subroutine plastic_kinehardening_init(fileUnit) phase_plasticityInstance, & phase_Noutput, & material_phase, & - plasticState, & + plasticState + use config_material, only: & MATERIAL_partPhase use lattice use numerics,only: & diff --git a/src/plastic_nonlocal.f90 b/src/plastic_nonlocal.f90 index 55871737d..eb75cee96 100644 --- a/src/plastic_nonlocal.f90 +++ b/src/plastic_nonlocal.f90 @@ -291,8 +291,8 @@ use material, only: phase_plasticity, & PLASTICITY_NONLOCAL_label, & PLASTICITY_NONLOCAL_ID, & plasticState, & - MATERIAL_partPhase ,& material_phase +use config_material, only: MATERIAL_partPhase use lattice use numerics,only: & numerics_integrator diff --git a/src/plastic_phenopowerlaw.f90 b/src/plastic_phenopowerlaw.f90 index 229d03c26..8ac436ea2 100644 --- a/src/plastic_phenopowerlaw.f90 +++ b/src/plastic_phenopowerlaw.f90 @@ -157,7 +157,8 @@ subroutine plastic_phenopowerlaw_init(fileUnit) PLASTICITY_PHENOPOWERLAW_label, & PLASTICITY_PHENOPOWERLAW_ID, & material_phase, & - plasticState, & + plasticState + use config_material, only: & MATERIAL_partPhase use lattice use numerics,only: & diff --git a/src/porosity_none.f90 b/src/porosity_none.f90 index c273baf3b..b94e5ca94 100644 --- a/src/porosity_none.f90 +++ b/src/porosity_none.f90 @@ -27,6 +27,7 @@ subroutine porosity_none_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: & diff --git a/src/porosity_phasefield.f90 b/src/porosity_phasefield.f90 index 6ab7263e4..a37538c37 100644 --- a/src/porosity_phasefield.f90 +++ b/src/porosity_phasefield.f90 @@ -77,11 +77,10 @@ subroutine porosity_phasefield_init(fileUnit) porosityState, & porosityMapping, & porosity, & - porosity_initialPhi, & + porosity_initialPhi + use config_material, only: & material_partHomogenization, & material_partPhase - use numerics,only: & - worldrank implicit none integer(pInt), intent(in) :: fileUnit @@ -94,11 +93,9 @@ subroutine porosity_phasefield_init(fileUnit) tag = '', & line = '' - mainProcess: if (worldrank == 0) then - write(6,'(/,a)') ' <<<+- porosity_'//POROSITY_phasefield_label//' init -+>>>' - write(6,'(a15,a)') ' Current time: ',IO_timeStamp() + write(6,'(/,a)') ' <<<+- porosity_'//POROSITY_phasefield_label//' init -+>>>' + write(6,'(a15,a)') ' Current time: ',IO_timeStamp() #include "compilation_info.f90" - endif mainProcess maxNinstance = int(count(porosity_type == POROSITY_phasefield_ID),pInt) if (maxNinstance == 0_pInt) return diff --git a/src/source_damage_anisoBrittle.f90 b/src/source_damage_anisoBrittle.f90 index 22236a636..e8d7f62ec 100644 --- a/src/source_damage_anisoBrittle.f90 +++ b/src/source_damage_anisoBrittle.f90 @@ -91,9 +91,10 @@ subroutine source_damage_anisoBrittle_init(fileUnit) phase_Noutput, & SOURCE_damage_anisoBrittle_label, & SOURCE_damage_anisoBrittle_ID, & + material_phase, & + sourceState + use config_material, only: & material_Nphase, & - material_phase, & - sourceState, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_damage_anisoDuctile.f90 b/src/source_damage_anisoDuctile.f90 index 944a65918..c99647939 100644 --- a/src/source_damage_anisoDuctile.f90 +++ b/src/source_damage_anisoDuctile.f90 @@ -95,9 +95,10 @@ subroutine source_damage_anisoDuctile_init(fileUnit) phase_Noutput, & SOURCE_damage_anisoDuctile_label, & SOURCE_damage_anisoDuctile_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_damage_isoBrittle.f90 b/src/source_damage_isoBrittle.f90 index b9fb2c22c..bb4497885 100644 --- a/src/source_damage_isoBrittle.f90 +++ b/src/source_damage_isoBrittle.f90 @@ -81,9 +81,10 @@ subroutine source_damage_isoBrittle_init(fileUnit) phase_Noutput, & SOURCE_damage_isoBrittle_label, & SOURCE_damage_isoBrittle_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_damage_isoDuctile.f90 b/src/source_damage_isoDuctile.f90 index ed08e0a41..6f3fa3f89 100644 --- a/src/source_damage_isoDuctile.f90 +++ b/src/source_damage_isoDuctile.f90 @@ -81,10 +81,12 @@ subroutine source_damage_isoDuctile_init(fileUnit) phase_Noutput, & SOURCE_damage_isoDuctile_label, & SOURCE_damage_isoDuctile_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase + use numerics,only: & numerics_integrator diff --git a/src/source_thermal_dissipation.f90 b/src/source_thermal_dissipation.f90 index 7a4e85c75..b9589d62b 100644 --- a/src/source_thermal_dissipation.f90 +++ b/src/source_thermal_dissipation.f90 @@ -67,9 +67,10 @@ subroutine source_thermal_dissipation_init(fileUnit) phase_Noutput, & SOURCE_thermal_dissipation_label, & SOURCE_thermal_dissipation_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_thermal_externalheat.f90 b/src/source_thermal_externalheat.f90 index 2907ddf85..39a23b71b 100644 --- a/src/source_thermal_externalheat.f90 +++ b/src/source_thermal_externalheat.f90 @@ -73,9 +73,10 @@ subroutine source_thermal_externalheat_init(fileUnit) phase_Noutput, & SOURCE_thermal_externalheat_label, & SOURCE_thermal_externalheat_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_vacancy_irradiation.f90 b/src/source_vacancy_irradiation.f90 index 566d97e68..bc5f9a620 100644 --- a/src/source_vacancy_irradiation.f90 +++ b/src/source_vacancy_irradiation.f90 @@ -69,9 +69,10 @@ subroutine source_vacancy_irradiation_init(fileUnit) phase_Noutput, & SOURCE_vacancy_irradiation_label, & SOURCE_vacancy_irradiation_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_vacancy_phenoplasticity.f90 b/src/source_vacancy_phenoplasticity.f90 index 8834a067a..0b543d19a 100644 --- a/src/source_vacancy_phenoplasticity.f90 +++ b/src/source_vacancy_phenoplasticity.f90 @@ -67,9 +67,10 @@ subroutine source_vacancy_phenoplasticity_init(fileUnit) phase_Noutput, & SOURCE_vacancy_phenoplasticity_label, & SOURCE_vacancy_phenoplasticity_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/source_vacancy_thermalfluc.f90 b/src/source_vacancy_thermalfluc.f90 index 91047fbf2..39890e2ee 100644 --- a/src/source_vacancy_thermalfluc.f90 +++ b/src/source_vacancy_thermalfluc.f90 @@ -71,9 +71,10 @@ subroutine source_vacancy_thermalfluc_init(fileUnit) phase_Noutput, & SOURCE_vacancy_thermalfluc_label, & SOURCE_vacancy_thermalfluc_ID, & - material_Nphase, & material_phase, & - sourceState, & + sourceState + use config_material, only: & + material_Nphase, & MATERIAL_partPhase use numerics,only: & numerics_integrator diff --git a/src/thermal_adiabatic.f90 b/src/thermal_adiabatic.f90 index 62ffabf9c..2b9a5ae59 100644 --- a/src/thermal_adiabatic.f90 +++ b/src/thermal_adiabatic.f90 @@ -64,6 +64,8 @@ subroutine thermal_adiabatic_init(fileUnit) IO_error, & IO_timeStamp, & IO_EOF + use config_material, only: & + material_partHomogenization use material, only: & thermal_type, & thermal_typeInstance, & @@ -76,8 +78,7 @@ subroutine thermal_adiabatic_init(fileUnit) thermalMapping, & thermal_initialT, & temperature, & - temperatureRate, & - material_partHomogenization + temperatureRate implicit none integer(pInt), intent(in) :: fileUnit diff --git a/src/thermal_conduction.f90 b/src/thermal_conduction.f90 index 151eb7aa3..83c776b6b 100644 --- a/src/thermal_conduction.f90 +++ b/src/thermal_conduction.f90 @@ -77,7 +77,8 @@ subroutine thermal_conduction_init(fileUnit) thermalMapping, & thermal_initialT, & temperature, & - temperatureRate, & + temperatureRate + use config_material, only: & material_partHomogenization implicit none diff --git a/src/thermal_isothermal.f90 b/src/thermal_isothermal.f90 index 68e09de8c..17e82c606 100644 --- a/src/thermal_isothermal.f90 +++ b/src/thermal_isothermal.f90 @@ -27,6 +27,7 @@ subroutine thermal_isothermal_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: & diff --git a/src/vacancyflux_cahnhilliard.f90 b/src/vacancyflux_cahnhilliard.f90 index e40772d11..5ea5c908a 100644 --- a/src/vacancyflux_cahnhilliard.f90 +++ b/src/vacancyflux_cahnhilliard.f90 @@ -91,9 +91,10 @@ subroutine vacancyflux_cahnhilliard_init(fileUnit) vacancyfluxMapping, & vacancyConc, & vacancyConcRate, & - vacancyflux_initialCv, & - material_partHomogenization, & - material_partPhase + vacancyflux_initialCv + use config_material, only: & + material_partPhase, & + material_partHomogenization implicit none integer(pInt), intent(in) :: fileUnit diff --git a/src/vacancyflux_isochempot.f90 b/src/vacancyflux_isochempot.f90 index f98379eba..6216c03cf 100644 --- a/src/vacancyflux_isochempot.f90 +++ b/src/vacancyflux_isochempot.f90 @@ -74,7 +74,8 @@ subroutine vacancyflux_isochempot_init(fileUnit) vacancyfluxMapping, & vacancyConc, & vacancyConcRate, & - vacancyflux_initialCv, & + vacancyflux_initialCv + use config_material, only: & material_partHomogenization implicit none diff --git a/src/vacancyflux_isoconc.f90 b/src/vacancyflux_isoconc.f90 index 470560206..bc66e2df9 100644 --- a/src/vacancyflux_isoconc.f90 +++ b/src/vacancyflux_isoconc.f90 @@ -27,6 +27,7 @@ subroutine vacancyflux_isoconc_init() use IO, only: & IO_timeStamp use material + use config_material implicit none integer(pInt) :: &