From 0153bca277e07ceb8df29edaaaba5bcee6417106 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sun, 13 Sep 2020 21:00:34 +0200 Subject: [PATCH] better print then write - shorter, always writes to STDOUT also, report only details (paper) of active models --- src/constitutive.f90 | 2 +- src/constitutive_plastic.f90 | 8 ++++--- src/constitutive_plastic_disloTungsten.f90 | 23 +++++++++--------- src/constitutive_plastic_dislotwin.f90 | 25 ++++++++++---------- src/constitutive_plastic_isotropic.f90 | 18 +++++++-------- src/constitutive_plastic_kinehardening.f90 | 9 ++++---- src/constitutive_plastic_none.f90 | 14 +++++------ src/constitutive_plastic_nonlocal.f90 | 27 +++++++++++----------- src/constitutive_plastic_phenopowerlaw.f90 | 12 ++++------ 9 files changed, 66 insertions(+), 72 deletions(-) diff --git a/src/constitutive.f90 b/src/constitutive.f90 index e39c405cf..3b342e3e6 100644 --- a/src/constitutive.f90 +++ b/src/constitutive.f90 @@ -446,7 +446,7 @@ subroutine constitutive_init call damage_init call thermal_init - write(6,'(/,a)') ' <<<+- constitutive init -+>>>'; flush(6) + print'(/,a)', ' <<<+- constitutive init -+>>>'; flush(6) constitutive_source_maxSizeDotState = 0 PhaseLoop2:do p = 1,phases%length diff --git a/src/constitutive_plastic.f90 b/src/constitutive_plastic.f90 index bf831ba98..bf6bc079e 100644 --- a/src/constitutive_plastic.f90 +++ b/src/constitutive_plastic.f90 @@ -1,5 +1,5 @@ !---------------------------------------------------------------------------------------------------- -!> @brief internal microstructure state for all plasticity constitutive models +!> @brief internal microstructure state for all plasticity constitutive models !---------------------------------------------------------------------------------------------------- submodule(constitutive) constitutive_plastic @@ -198,6 +198,8 @@ module subroutine plastic_init integer :: p class(tNode), pointer :: phases + print'(/,a)', ' <<<+- constitutive_plastic init -+>>>' + phases => config_material%get('phase') allocate(plasticState(phases%length)) @@ -215,7 +217,7 @@ module subroutine plastic_init do p = 1, phases%length phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p)) - enddo + enddo end subroutine plastic_init @@ -355,7 +357,7 @@ end subroutine constitutive_plastic_LpAndItsTangents !-------------------------------------------------------------------------------------------- !> @brief writes plasticity constitutive results to HDF5 output file -!-------------------------------------------------------------------------------------------- +!-------------------------------------------------------------------------------------------- module subroutine plastic_results integer :: p diff --git a/src/constitutive_plastic_disloTungsten.f90 b/src/constitutive_plastic_disloTungsten.f90 index adf07df21..2bf4fd48e 100644 --- a/src/constitutive_plastic_disloTungsten.f90 +++ b/src/constitutive_plastic_disloTungsten.f90 @@ -96,16 +96,15 @@ module function plastic_disloTungsten_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- plastic_disloTungsten init -+>>>' - - write(6,'(/,a)') ' Cereceda et al., International Journal of Plasticity 78:242–256, 2016' - write(6,'(a)') ' https://dx.doi.org/10.1016/j.ijplas.2015.09.002' + print'(/,a)', ' <<<+- plastic_dislotungsten init -+>>>' myPlasticity = plastic_active('disloTungsten') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return + + print*, 'Cereceda et al., International Journal of Plasticity 78:242–256, 2016' + print*, 'https://dx.doi.org/10.1016/j.ijplas.2015.09.002' allocate(param(Ninstance)) allocate(state(Ninstance)) @@ -179,7 +178,7 @@ module function plastic_disloTungsten_init() result(myPlasticity) prm%Q_cl = pl%get_asFloat('Q_cl') prm%atomicVolume = pl%get_asFloat('f_at') * prm%b_sl**3.0_pReal prm%D_a = pl%get_asFloat('D_a') * prm%b_sl - + prm%dipoleformation = pl%get_asBool('dipole_formation_factor', defaultVal = .true.) ! expand: family => system @@ -410,19 +409,19 @@ module subroutine plastic_disloTungsten_results(instance,group) associate(prm => param(instance), stt => state(instance), dst => dependentState(instance)) outputsLoop: do o = 1,size(prm%output) select case(trim(prm%output(o))) - case('rho_mob') + case('rho_mob') if(prm%sum_N_sl>0) call results_writeDataset(group,stt%rho_mob,trim(prm%output(o)), & 'mobile dislocation density','1/m²') - case('rho_dip') + case('rho_dip') if(prm%sum_N_sl>0) call results_writeDataset(group,stt%rho_dip,trim(prm%output(o)), & 'dislocation dipole density''1/m²') - case('gamma_sl') + case('gamma_sl') if(prm%sum_N_sl>0) call results_writeDataset(group,stt%gamma_sl,trim(prm%output(o)), & 'plastic shear','1') - case('Lambda_sl') + case('Lambda_sl') if(prm%sum_N_sl>0) call results_writeDataset(group,dst%Lambda_sl,trim(prm%output(o)), & 'mean free path for slip','m') - case('tau_pass') + case('tau_pass') if(prm%sum_N_sl>0) call results_writeDataset(group,dst%threshold_stress,trim(prm%output(o)), & 'threshold stress for slip','Pa') end select diff --git a/src/constitutive_plastic_dislotwin.f90 b/src/constitutive_plastic_dislotwin.f90 index 6791c6dd0..a25815899 100644 --- a/src/constitutive_plastic_dislotwin.f90 +++ b/src/constitutive_plastic_dislotwin.f90 @@ -143,22 +143,21 @@ module function plastic_dislotwin_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- constitutive_dislotwin init -+>>>' - - write(6,'(/,a)') ' Ma and Roters, Acta Materialia 52(12):3603–3612, 2004' - write(6,'(a)') ' https://doi.org/10.1016/j.actamat.2004.04.012' - - write(6,'(/,a)') ' Roters et al., Computational Materials Science 39:91–95, 2007' - write(6,'(a)') ' https://doi.org/10.1016/j.commatsci.2006.04.014' - - write(6,'(/,a)') ' Wong et al., Acta Materialia 118:140–151, 2016' - write(6,'(a,/)') ' https://doi.org/10.1016/j.actamat.2016.07.032' + print'(/,a)', ' <<<+- plastic_dislotwin init -+>>>' myPlasticity = plastic_active('dislotwin') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return + + print*, 'Ma and Roters, Acta Materialia 52(12):3603–3612, 2004' + print*, 'https://doi.org/10.1016/j.actamat.2004.04.012'//IO_EOL + + print*, 'Roters et al., Computational Materials Science 39:91–95, 2007' + print*, 'https://doi.org/10.1016/j.commatsci.2006.04.014'//IO_EOL + + print*, 'Wong et al., Acta Materialia 118:140–151, 2016' + print*, 'https://doi.org/10.1016/j.actamat.2016.07.032' allocate(param(Ninstance)) allocate(state(Ninstance)) @@ -414,7 +413,7 @@ module function plastic_dislotwin_init() result(myPlasticity) + size(['f_tr']) * prm%sum_N_tr sizeState = sizeDotState - + call constitutive_allocateState(plasticState(p),NipcMyPhase,sizeState,sizeDotState,0) !-------------------------------------------------------------------------------------------------- diff --git a/src/constitutive_plastic_isotropic.f90 b/src/constitutive_plastic_isotropic.f90 index f561e9dd0..382b641b3 100644 --- a/src/constitutive_plastic_isotropic.f90 +++ b/src/constitutive_plastic_isotropic.f90 @@ -49,7 +49,7 @@ contains !> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- -module function plastic_isotropic_init() result(myPlasticity) +module function plastic_isotropic_init() result(myPlasticity) logical, dimension(:), allocatable :: myPlasticity integer :: & @@ -67,18 +67,16 @@ module function plastic_isotropic_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- plastic_isotropic init -+>>>' - - write(6,'(/,a)') ' Maiti and Eisenlohr, Scripta Materialia 145:37–40, 2018' - write(6,'(a)') ' https://doi.org/10.1016/j.scriptamat.2017.09.047' - + print'(/,a)', ' <<<+- plastic_isotropic init -+>>>' myPlasticity = plastic_active('isotropic') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return + print*, 'Maiti and Eisenlohr, Scripta Materialia 145:37–40, 2018' + print*, 'https://doi.org/10.1016/j.scriptamat.2017.09.047' + allocate(param(Ninstance)) allocate(state(Ninstance)) allocate(dotState(Ninstance)) @@ -96,7 +94,7 @@ module function plastic_isotropic_init() result(myPlasticity) pl => phase%get('plasticity') -#if defined (__GFORTRAN__) +#if defined (__GFORTRAN__) prm%output = output_asStrings(pl) #else prm%output = pl%get_asStrings('output',defaultVal=emptyStringArray) @@ -339,7 +337,7 @@ module subroutine plastic_isotropic_results(instance,group) associate(prm => param(instance), stt => state(instance)) outputsLoop: do o = 1,size(prm%output) select case(trim(prm%output(o))) - case ('xi') + case ('xi') call results_writeDataset(group,stt%xi,trim(prm%output(o)), & 'resistance against plastic flow','Pa') end select diff --git a/src/constitutive_plastic_kinehardening.f90 b/src/constitutive_plastic_kinehardening.f90 index 21215220c..d3ffd2c85 100644 --- a/src/constitutive_plastic_kinehardening.f90 +++ b/src/constitutive_plastic_kinehardening.f90 @@ -58,7 +58,7 @@ contains !> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- -module function plastic_kinehardening_init() result(myPlasticity) +module function plastic_kinehardening_init() result(myPlasticity) logical, dimension(:), allocatable :: myPlasticity integer :: & @@ -79,12 +79,11 @@ module function plastic_kinehardening_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- plastic_kinehardening init -+>>>' + print'(/,a)', ' <<<+- plastic_kinehardening init -+>>>' myPlasticity = plastic_active('kinehardening') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return allocate(param(Ninstance)) @@ -384,7 +383,7 @@ module subroutine plastic_kinehardening_results(instance,group) case('xi') if(prm%sum_N_sl>0) call results_writeDataset(group,stt%crss,trim(prm%output(o)), & 'resistance against plastic slip','Pa') - case('tau_b') + case('tau_b') if(prm%sum_N_sl>0) call results_writeDataset(group,stt%crss_back,trim(prm%output(o)), & 'back stress against plastic slip','Pa') case ('sgn(gamma)') diff --git a/src/constitutive_plastic_none.f90 b/src/constitutive_plastic_none.f90 index 1fee0a079..d62a798cc 100644 --- a/src/constitutive_plastic_none.f90 +++ b/src/constitutive_plastic_none.f90 @@ -9,10 +9,10 @@ submodule(constitutive:constitutive_plastic) plastic_none contains !-------------------------------------------------------------------------------------------------- -!> @brief module initialization +!> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- -module function plastic_none_init() result(myPlasticity) +module function plastic_none_init() result(myPlasticity) logical, dimension(:), allocatable :: myPlasticity integer :: & @@ -24,20 +24,20 @@ module function plastic_none_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- plastic_none init -+>>>' + print'(/,a)', ' <<<+- plastic_none init -+>>>' phases => config_material%get('phase') - allocate(myPlasticity(phases%length), source = .false. ) + allocate(myPlasticity(phases%length), source = .false.) do p = 1, phases%length phase => phases%get(p) pl => phase%get('plasticity') if(pl%get_asString('type') == 'none') myPlasticity(p) = .true. enddo - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + Ninstance = count(myPlasticity) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return - + do p = 1, phases%length phase => phases%get(p) if(.not. myPlasticity(p)) cycle diff --git a/src/constitutive_plastic_nonlocal.f90 b/src/constitutive_plastic_nonlocal.f90 index a56e109f2..152cde43e 100644 --- a/src/constitutive_plastic_nonlocal.f90 +++ b/src/constitutive_plastic_nonlocal.f90 @@ -159,8 +159,9 @@ submodule(constitutive:constitutive_plastic) plastic_nonlocal contains + !-------------------------------------------------------------------------------------------------- -!> @brief module initialization +!> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- module function plastic_nonlocal_init() result(myPlasticity) @@ -183,24 +184,22 @@ module function plastic_nonlocal_init() result(myPlasticity) phases, & phase, & pl - - write(6,'(/,a)') ' <<<+- plastic_nonlocal init -+>>>' - write(6,'(/,a)') ' Reuber et al., Acta Materialia 71:333–348, 2014' - write(6,'(a)') ' https://doi.org/10.1016/j.actamat.2014.03.012' - - write(6,'(/,a)') ' Kords, Dissertation RWTH Aachen, 2014' - write(6,'(a)') ' http://publications.rwth-aachen.de/record/229993' + print'(/,a)', ' <<<+- plastic_nonlocal init -+>>>' myPlasticity = plastic_active('nonlocal') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) then call geometry_plastic_nonlocal_disable return endif + + print*, 'Reuber et al., Acta Materialia 71:333–348, 2014' + print*, 'https://doi.org/10.1016/j.actamat.2014.03.012'//IO_EOL + print*, 'Kords, Dissertation RWTH Aachen, 2014' + print*, 'http://publications.rwth-aachen.de/record/229993'//IO_EOL allocate(param(Ninstance)) allocate(state(Ninstance)) @@ -224,14 +223,14 @@ module function plastic_nonlocal_init() result(myPlasticity) dst => microstructure(i)) pl => phase%get('plasticity') - phase_localPlasticity(p) = .not. pl%contains('nonlocal') + phase_localPlasticity(p) = .not. pl%contains('nonlocal') #if defined (__GFORTRAN__) prm%output = output_asStrings(pl) #else prm%output = pl%get_asStrings('output',defaultVal=emptyStringArray) #endif - + prm%atol_rho = pl%get_asFloat('atol_rho',defaultVal=1.0e4_pReal) ! This data is read in already in lattice @@ -519,7 +518,7 @@ module function plastic_nonlocal_init() result(myPlasticity) if(.not. myPlasticity(p)) cycle i = i + 1 - + NipcMyPhase = count(material_phaseAt==p) * discretization_nIP l = 0 do t = 1,4 @@ -543,7 +542,7 @@ module function plastic_nonlocal_init() result(myPlasticity) enddo if (iD(param(i)%sum_N_sl,2,i) /= plasticState(p)%sizeState) & call IO_error(0, ext_msg = 'state indices not properly set (nonlocal)') - enddo + enddo end function plastic_nonlocal_init diff --git a/src/constitutive_plastic_phenopowerlaw.f90 b/src/constitutive_plastic_phenopowerlaw.f90 index 270352585..b30a4d9df 100644 --- a/src/constitutive_plastic_phenopowerlaw.f90 +++ b/src/constitutive_plastic_phenopowerlaw.f90 @@ -66,7 +66,7 @@ contains !> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- -module function plastic_phenopowerlaw_init() result(myPlasticity) +module function plastic_phenopowerlaw_init() result(myPlasticity) logical, dimension(:), allocatable :: myPlasticity integer :: & @@ -88,15 +88,13 @@ module function plastic_phenopowerlaw_init() result(myPlasticity) phase, & pl - write(6,'(/,a)') ' <<<+- plastic_phenopowerlaw init -+>>>' - + print'(/,a)', ' <<<+- plastic_phenopowerlaw init -+>>>' myPlasticity = plastic_active('phenopowerlaw') - Ninstance = count(myPlasticity) - write(6,'(a16,1x,i5,/)') '# instances:',Ninstance; flush(6) + print'(a,i2)', ' # instances: ',Ninstance; flush(6) if(Ninstance == 0) return - + allocate(param(Ninstance)) allocate(state(Ninstance)) allocate(dotState(Ninstance)) @@ -231,7 +229,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity) + size(['xi_tw ','gamma_tw']) * prm%sum_N_tw sizeState = sizeDotState - + call constitutive_allocateState(plasticState(p),NipcMyPhase,sizeState,sizeDotState,0) !--------------------------------------------------------------------------------------------------