diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da30d837a..b7f7f8b0b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -292,33 +292,6 @@ Phenopowerlaw_singleSlip: ################################################################################################### -Hex_elastic: - stage: marc - script: - - module load $IntelMarc $HDF5Marc $MSC - - Hex_elastic/test.py - except: - - master - - release - -CubicFCC_elastic: - stage: marc - script: - - module load $IntelMarc $HDF5Marc $MSC - - CubicFCC_elastic/test.py - except: - - master - - release - -CubicBCC_elastic: - stage: marc - script: - - module load $IntelMarc $HDF5Marc $MSC - - CubicBCC_elastic/test.py - except: - - master - - release - J2_plasticBehavior: stage: marc script: diff --git a/PRIVATE b/PRIVATE index 73cb2f633..751f96155 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 73cb2f63397dfb8551fa5d8cb444eb89b2d3712a +Subproject commit 751f96155294e449b31c5d4913fea7bc02ce81b1 diff --git a/examples/ConfigFiles/Phase_Isotropic_AluminumIsotropic.yaml b/examples/ConfigFiles/Phase_Isotropic_AluminumIsotropic.yaml index 446efc194..7b05140cb 100644 --- a/examples/ConfigFiles/Phase_Isotropic_AluminumIsotropic.yaml +++ b/examples/ConfigFiles/Phase_Isotropic_AluminumIsotropic.yaml @@ -1,16 +1,16 @@ # Kuo, J. C., Mikrostrukturmechanik von Bikristallen mit Kippkorngrenzen. Shaker-Verlag 2004. http://edoc.mpg.de/204079 Aluminum: - elasticity: {C_11: 110.9e9, C_12: 58.34e9, type: hooke} - generic: + mechanics: + lattice: aP + elasticity: {C_11: 110.9e9, C_12: 58.34e9, type: hooke} output: [F, P, Fe, Fp, Lp] - lattice: iso - plasticity: - type: isotropic - output: [xi] - xi_0: 31e6 - xi_inf: 63e6 - dot_gamma_0: 0.001 - n: 20 - M: 3 - h_0: 75e6 - a: 2.25 + plasticity: + type: isotropic + output: [xi] + xi_0: 31e6 + xi_inf: 63e6 + dot_gamma_0: 0.001 + n: 20 + M: 3 + h_0: 75e6 + a: 2.25 diff --git a/examples/ConfigFiles/Phase_Isotropic_FreeSurface.yaml b/examples/ConfigFiles/Phase_Isotropic_FreeSurface.yaml index 20148c4fb..4d9690f44 100644 --- a/examples/ConfigFiles/Phase_Isotropic_FreeSurface.yaml +++ b/examples/ConfigFiles/Phase_Isotropic_FreeSurface.yaml @@ -1,17 +1,17 @@ # Maiti and Eisenlohr 2018 Scripta Materialia Air: - elasticity: {C_11: 10e9, C_12: 0.0, type: hooke} - generic: + mechanics: + lattice: aP + elasticity: {C_11: 10e9, C_12: 0.0, type: hooke} output: [F, P, Fe, Fp, Lp] - lattice: iso - plasticity: - type: isotropic - output: [xi] - xi_0: 0.3e6 - xi_inf: 0.6e6 - dot_gamma_0: 0.001 - n: 5 - M: 3 - h_0: 1e6 - a: 2 - dilatation: true + plasticity: + type: isotropic + output: [xi] + xi_0: 0.3e6 + xi_inf: 0.6e6 + dot_gamma_0: 0.001 + n: 5 + M: 3 + h_0: 1e6 + a: 2 + dilatation: true diff --git a/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Ferrite.yaml b/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Ferrite.yaml index 4940ca8bd..ce3bbadb7 100644 --- a/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Ferrite.yaml +++ b/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Ferrite.yaml @@ -2,15 +2,16 @@ # Tasan et.al. 2015 International Journal of Plasticity # Diehl et.al. 2015 Meccanica Ferrite: - elasticity: {C_11: 233.3e9, C_12: 135.5e9, C_44: 118.0e9, type: hooke} - lattice: bcc - plasticity: - N_sl: [12, 12] - a_sl: 2.0 - dot_gamma_0_sl: 0.001 - h_0_sl_sl: 1000.0e6 - h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] - n_sl: 20 - type: phenopowerlaw - xi_0_sl: [95.e6, 96.e6] - xi_inf_sl: [222.e6, 412.7e6] + mechanics: + lattice: cI + elasticity: {C_11: 233.3e9, C_12: 135.5e9, C_44: 118.0e9, type: hooke} + plasticity: + N_sl: [12, 12] + a_sl: 2.0 + dot_gamma_0_sl: 0.001 + h_0_sl_sl: 1000.0e6 + h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] + n_sl: 20 + type: phenopowerlaw + xi_0_sl: [95.e6, 96.e6] + xi_inf_sl: [222.e6, 412.7e6] diff --git a/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Martensite.yaml b/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Martensite.yaml index b207d7b34..ab79ceeb1 100644 --- a/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Martensite.yaml +++ b/examples/ConfigFiles/Phase_Phenopowerlaw_BCC-Martensite.yaml @@ -2,15 +2,16 @@ # Tasan et.al. 2015 International Journal of Plasticity # Diehl et.al. 2015 Meccanica Martensite: - elasticity: {C_11: 417.4e9, C_12: 242.4e9, C_44: 211.1e9, type: hooke} - lattice: bcc - plasticity: - N_sl: [12, 12] - a_sl: 2.0 - dot_gamma_0_sl: 0.001 - h_0_sl_sl: 563.0e9 - h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] - n_sl: 20 - type: phenopowerlaw - xi_0_sl: [405.8e6, 456.7e6] - xi_inf_sl: [872.9e6, 971.2e6] + mechanics: + lattice: cI + elasticity: {C_11: 417.4e9, C_12: 242.4e9, C_44: 211.1e9, type: hooke} + plasticity: + N_sl: [12, 12] + a_sl: 2.0 + dot_gamma_0_sl: 0.001 + h_0_sl_sl: 563.0e9 + h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] + n_sl: 20 + type: phenopowerlaw + xi_0_sl: [405.8e6, 456.7e6] + xi_inf_sl: [872.9e6, 971.2e6] diff --git a/examples/FEM/polyXtal/material.yaml b/examples/FEM/polyXtal/material.yaml index 5c00f17ad..c7d17657d 100644 --- a/examples/FEM/polyXtal/material.yaml +++ b/examples/FEM/polyXtal/material.yaml @@ -1,26 +1,26 @@ homogenization: SX: N_constituents: 1 - mech: {type: none} + mechanics: {type: none} phase: Aluminum: - elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} - generic: - output: [F, P, Fe, Fp, Lp] - lattice: fcc - plasticity: - N_sl: [12] - a_sl: 2.25 - atol_xi: 1.0 - dot_gamma_0_sl: 0.001 - h_0_sl_sl: 75e6 - h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] - n_sl: 20 - output: [xi_sl] - type: phenopowerlaw - xi_0_sl: [31e6] - xi_inf_sl: [63e6] + mechanics: + lattice: cF + output: [F, P, F_e, F_p, L_p] + elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} + plasticity: + N_sl: [12] + a_sl: 2.25 + atol_xi: 1.0 + dot_gamma_0_sl: 0.001 + h_0_sl_sl: 75e6 + h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] + n_sl: 20 + output: [xi_sl] + type: phenopowerlaw + xi_0_sl: [31e6] + xi_inf_sl: [63e6] material: - constituents: diff --git a/examples/SpectralMethod/Polycrystal/material.yaml b/examples/SpectralMethod/Polycrystal/material.yaml index 366fce151..b560a919d 100644 --- a/examples/SpectralMethod/Polycrystal/material.yaml +++ b/examples/SpectralMethod/Polycrystal/material.yaml @@ -108,7 +108,7 @@ material: phase: Aluminum: - lattice: fcc + lattice: cF mechanics: output: [F, P, F_e, F_p, L_p, O] elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} diff --git a/python/damask/_result.py b/python/damask/_result.py index 917d75b68..1dfc33f95 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -46,7 +46,7 @@ class Result: self.version_major = f.attrs['DADF5_version_major'] self.version_minor = f.attrs['DADF5_version_minor'] - if self.version_major != 0 or not 7 <= self.version_minor <= 8: + if self.version_major != 0 or not 7 <= self.version_minor <= 9: raise TypeError(f'Unsupported DADF5 version {self.version_major}.{self.version_minor}') self.structured = 'grid' in f['geometry'].attrs.keys() @@ -121,6 +121,10 @@ class Result: True is equivalent to [*], False is equivalent to [] """ + def natural_sort(key): + convert = lambda text: int(text) if text.isdigit() else text + return [ convert(c) for c in re.split('([0-9]+)', key) ] + # allow True/False and string arguments if datasets is True: datasets = ['*'] @@ -154,11 +158,11 @@ class Result: self.selection[what] = valid elif action == 'add': add = existing.union(valid) - add_sorted = sorted(add, key=lambda x: int("".join([i for i in x if i.isdigit()]))) + add_sorted = sorted(add, key=natural_sort) self.selection[what] = add_sorted elif action == 'del': diff = existing.difference(valid) - diff_sorted = sorted(diff, key=lambda x: int("".join([i for i in x if i.isdigit()]))) + diff_sorted = sorted(diff, key=natural_sort) self.selection[what] = diff_sorted @@ -329,9 +333,6 @@ class Result: raise PermissionError('Rename operation not permitted') - # def datamerger(regular expression to filter groups into one copy) - - def place(self,datasets,constituent=0,tagged=False,split=True): """ Distribute datasets onto geometry and return Table or (split) dictionary of Tables. @@ -501,20 +502,6 @@ class Result: return path - def get_constituent_ID(self,c=0): - """Pointwise constituent ID.""" - with h5py.File(self.fname,'r') as f: - names = f['/mapping/phase']['Name'][:,c].astype('str') - return np.array([int(n.split('_')[0]) for n in names.tolist()],dtype=np.int32) - - - def get_crystal_structure(self): # ToDo: extension to multi constituents/phase - """Info about the crystal structure.""" - with h5py.File(self.fname,'r') as f: - return f[self.get_dataset_location('O')[0]].attrs['Lattice'] if h5py3 else \ - f[self.get_dataset_location('O')[0]].attrs['Lattice'].decode() - - def enable_user_function(self,func): globals()[func.__name__]=func print(f'Function {func.__name__} enabled in add_calculation.') @@ -795,11 +782,11 @@ class Result: @staticmethod def _add_IPF_color(q,l): m = util.scale_to_coprime(np.array(l)) - - o = Orientation(rotation = (rfn.structured_to_unstructured(q['data'])), - lattice = {'fcc':'cF', - 'bcc':'cI', - 'hex':'hP'}[q['meta']['Lattice']]) + try: + lattice = {'fcc':'cF','bcc':'cI','hex':'hP'}[q['meta']['Lattice']] + except KeyError: + lattice = q['meta']['Lattice'] + o = Orientation(rotation = (rfn.structured_to_unstructured(q['data'])),lattice=lattice) return { 'data': np.uint8(o.IPF_color(l)*255), diff --git a/python/tests/reference/Result/12grains6x7x8_tensionY.hdf5 b/python/tests/reference/Result/12grains6x7x8_tensionY.hdf5 index 6d9334d1e..4cb07593b 100644 Binary files a/python/tests/reference/Result/12grains6x7x8_tensionY.hdf5 and b/python/tests/reference/Result/12grains6x7x8_tensionY.hdf5 differ diff --git a/python/tests/reference/Result/material.yaml b/python/tests/reference/Result/12grains6x7x8_tensionY.yaml similarity index 97% rename from python/tests/reference/Result/material.yaml rename to python/tests/reference/Result/12grains6x7x8_tensionY.yaml index cd9cbad2a..50557edda 100644 --- a/python/tests/reference/Result/material.yaml +++ b/python/tests/reference/Result/12grains6x7x8_tensionY.yaml @@ -2,12 +2,12 @@ homogenization: SX: N_constituents: 1 - mech: {type: none} + mechanics: {type: none} phase: pheno_fcc: - lattice: fcc - mech: + lattice: cF + mechanics: output: [F, P, F_e, F_p, L_p, O] elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} plasticity: @@ -23,8 +23,8 @@ phase: xi_0_sl: [31e6] xi_inf_sl: [63e6] pheno_bcc: - lattice: bcc - mech: + lattice: cI + mechanics: output: [F, P, F_e, F_p, L_p, O] elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} plasticity: diff --git a/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.hdf5 b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.hdf5 index 799005217..f0ac836c6 100644 Binary files a/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.hdf5 and b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.hdf5 differ diff --git a/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.yaml b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.yaml new file mode 100644 index 000000000..0fc5b0897 --- /dev/null +++ b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.yaml @@ -0,0 +1,56 @@ +--- +homogenization: + SX: + N_constituents: 1 + mechanics: {type: none} + +phase: + pheno_fcc: + lattice: cF + mechanics: + output: [F, P, F_e, F_p, L_p, O] + elasticity: {C_11: 106.75e9, C_12: 60.41e9, C_44: 28.34e9, type: hooke} + plasticity: + N_sl: [12] + a_sl: 2.25 + atol_xi: 1.0 + dot_gamma_0_sl: 0.001 + h_0_sl_sl: 75e6 + h_sl_sl: [1, 1, 1.4, 1.4, 1.4, 1.4] + n_sl: 20 + output: [xi_sl] + type: phenopowerlaw + xi_0_sl: [31e6] + xi_inf_sl: [63e6] + +material: + - constituents: + - fraction: 1.0 + O: [0.8229200444892315, 0.5284940239127993, -0.11958598847729246, 0.17086795611292308] + phase: pheno_fcc + homogenization: SX + - constituents: + - fraction: 1.0 + O: [0.029934934533052786, -0.0463822071939717, 0.9983440440417412, 0.01617900728410769] + phase: pheno_fcc + homogenization: SX + - constituents: + - fraction: 1.0 + O: [0.5285808688806949, 0.7326575088838098, 0.4051997815944012, 0.1401013087924221] + phase: pheno_fcc + homogenization: SX + - constituents: + - fraction: 1.0 + O: [0.1839974517790312, 0.49550065903084944, -0.1541415483910751, -0.8347840545305227] + phase: pheno_fcc + homogenization: SX + - constituents: + - fraction: 1.0 + O: [0.8055693100147384, -0.22778497057116814, -0.028331746016454287, 0.5462320075864553] + phase: pheno_fcc + homogenization: SX + - constituents: + - fraction: 1.0 + O: [0.8025842700117737, -0.33640019337884963, -0.3847408071640489, 0.3076815085881779] + phase: pheno_fcc + homogenization: SX diff --git a/python/tests/reference/Result/tensionY.yaml b/python/tests/reference/Result/tensionY.yaml index eb34e3e47..4cc041729 100644 --- a/python/tests/reference/Result/tensionY.yaml +++ b/python/tests/reference/Result/tensionY.yaml @@ -5,7 +5,7 @@ step: t: 20 N: 40 f_out: 4 - mech: + mechanics: dot_F: [x, 0, 0, 0, 1.0e-3, 0, 0, 0, x] diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index 787721339..a1d5f74f6 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -173,11 +173,8 @@ class TestResult: loc = {'O': default.get_dataset_location('O'), 'color': default.get_dataset_location('IPFcolor_[{} {} {}]'.format(*d))} qu = default.read_dataset(loc['O']).view(np.double).squeeze() - crystal_structure = default.get_crystal_structure() - c = Orientation(rotation=qu, - lattice={'fcc':'cF', - 'bcc':'cI', - 'hex':'hP'}[crystal_structure]) + crystal_structure = default._get_attribute(default.get_dataset_location('O')[0],'Lattice') + c = Orientation(rotation=qu,lattice=crystal_structure) in_memory = np.uint8(c.IPF_color(np.array(d))*255) in_file = default.read_dataset(loc['color']) assert np.allclose(in_memory,in_file) diff --git a/src/constitutive_mech.f90 b/src/constitutive_mech.f90 index b3ae2a930..2a6bf97eb 100644 --- a/src/constitutive_mech.f90 +++ b/src/constitutive_mech.f90 @@ -30,10 +30,10 @@ submodule(constitutive) constitutive_mech myPlasticity end function plastic_dislotwin_init - module function plastic_disloTungsten_init() result(myPlasticity) + module function plastic_dislotungsten_init() result(myPlasticity) logical, dimension(:), allocatable :: & myPlasticity - end function plastic_disloTungsten_init + end function plastic_dislotungsten_init module function plastic_nonlocal_init() result(myPlasticity) logical, dimension(:), allocatable :: & @@ -94,7 +94,7 @@ submodule(constitutive) constitutive_mech of end subroutine plastic_dislotwin_LpAndItsTangent - pure module subroutine plastic_disloTungsten_LpAndItsTangent(Lp,dLp_dMp,Mp,T,instance,of) + pure module subroutine plastic_dislotungsten_LpAndItsTangent(Lp,dLp_dMp,Mp,T,instance,of) real(pReal), dimension(3,3), intent(out) :: & Lp !< plastic velocity gradient real(pReal), dimension(3,3,3,3), intent(out) :: & @@ -107,7 +107,7 @@ submodule(constitutive) constitutive_mech integer, intent(in) :: & instance, & of - end subroutine plastic_disloTungsten_LpAndItsTangent + end subroutine plastic_dislotungsten_LpAndItsTangent module subroutine plastic_nonlocal_LpAndItsTangent(Lp,dLp_dMp, & Mp,Temperature,instance,of,ip,el) @@ -136,11 +136,11 @@ submodule(constitutive) constitutive_mech T end subroutine plastic_dislotwin_dependentState - module subroutine plastic_disloTungsten_dependentState(instance,of) + module subroutine plastic_dislotungsten_dependentState(instance,of) integer, intent(in) :: & instance, & of - end subroutine plastic_disloTungsten_dependentState + end subroutine plastic_dislotungsten_dependentState module subroutine plastic_nonlocal_dependentState(F, Fp, instance, of, ip, el) real(pReal), dimension(3,3), intent(in) :: & @@ -173,10 +173,10 @@ submodule(constitutive) constitutive_mech character(len=*), intent(in) :: group end subroutine plastic_dislotwin_results - module subroutine plastic_disloTungsten_results(instance,group) + module subroutine plastic_dislotungsten_results(instance,group) integer, intent(in) :: instance character(len=*), intent(in) :: group - end subroutine plastic_disloTungsten_results + end subroutine plastic_dislotungsten_results module subroutine plastic_nonlocal_results(instance,group) integer, intent(in) :: instance @@ -255,7 +255,7 @@ module subroutine mech_init where(plastic_phenopowerlaw_init()) phase_plasticity = PLASTICITY_PHENOPOWERLAW_ID where(plastic_kinehardening_init()) phase_plasticity = PLASTICITY_KINEHARDENING_ID where(plastic_dislotwin_init()) phase_plasticity = PLASTICITY_DISLOTWIN_ID - where(plastic_disloTungsten_init()) phase_plasticity = PLASTICITY_DISLOTUNGSTEN_ID + where(plastic_dislotungsten_init()) phase_plasticity = PLASTICITY_DISLOTUNGSTEN_ID where(plastic_nonlocal_init()) phase_plasticity = PLASTICITY_NONLOCAL_ID do p = 1, phases%length @@ -368,7 +368,7 @@ module subroutine constitutive_plastic_dependentState(F, Fp, ipc, ip, el) case (PLASTICITY_DISLOTWIN_ID) plasticityType call plastic_dislotwin_dependentState(temperature(ho)%p(tme),instance,of) case (PLASTICITY_DISLOTUNGSTEN_ID) plasticityType - call plastic_disloTungsten_dependentState(instance,of) + call plastic_dislotungsten_dependentState(instance,of) case (PLASTICITY_NONLOCAL_ID) plasticityType call plastic_nonlocal_dependentState (F,Fp,instance,of,ip,el) end select plasticityType @@ -435,7 +435,7 @@ module subroutine constitutive_plastic_LpAndItsTangents(Lp, dLp_dS, dLp_dFi, & call plastic_dislotwin_LpAndItsTangent(Lp,dLp_dMp,Mp,temperature(ho)%p(tme),instance,of) case (PLASTICITY_DISLOTUNGSTEN_ID) plasticityType - call plastic_disloTungsten_LpAndItsTangent(Lp,dLp_dMp,Mp,temperature(ho)%p(tme),instance,of) + call plastic_dislotungsten_LpAndItsTangent(Lp,dLp_dMp,Mp,temperature(ho)%p(tme),instance,of) end select plasticityType @@ -478,7 +478,7 @@ module subroutine plastic_results call plastic_dislotwin_results(phase_plasticityInstance(p),group) case(PLASTICITY_DISLOTUNGSTEN_ID) - call plastic_disloTungsten_results(phase_plasticityInstance(p),group) + call plastic_dislotungsten_results(phase_plasticityInstance(p),group) case(PLASTICITY_NONLOCAL_ID) call plastic_nonlocal_results(phase_plasticityInstance(p),group) diff --git a/src/constitutive_plastic_disloTungsten.f90 b/src/constitutive_plastic_disloTungsten.f90 index dfabc610d..c39ae5c2b 100644 --- a/src/constitutive_plastic_disloTungsten.f90 +++ b/src/constitutive_plastic_disloTungsten.f90 @@ -5,7 +5,7 @@ !> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH !> @brief crystal plasticity model for bcc metals, especially Tungsten !-------------------------------------------------------------------------------------------------- -submodule(constitutive:constitutive_mech) plastic_disloTungsten +submodule(constitutive:constitutive_mech) plastic_dislotungsten real(pReal), parameter :: & kB = 1.38e-23_pReal !< Boltzmann constant in J/Kelvin @@ -74,7 +74,7 @@ contains !> @brief Perform module initialization. !> @details reads in material parameters, allocates arrays, and does sanity checks !-------------------------------------------------------------------------------------------------- -module function plastic_disloTungsten_init() result(myPlasticity) +module function plastic_dislotungsten_init() result(myPlasticity) logical, dimension(:), allocatable :: myPlasticity integer :: & @@ -99,7 +99,7 @@ module function plastic_disloTungsten_init() result(myPlasticity) print'(/,a)', ' <<<+- plastic_dislotungsten init -+>>>' - myPlasticity = plastic_active('disloTungsten') + myPlasticity = plastic_active('dislotungsten') Ninstances = count(myPlasticity) print'(a,i2)', ' # instances: ',Ninstances; flush(IO_STDOUT) if(Ninstances == 0) return @@ -142,7 +142,7 @@ module function plastic_disloTungsten_init() result(myPlasticity) prm%P_sl = lattice_SchmidMatrix_slip(N_sl,phase%get_asString('lattice'),& phase%get_asFloat('c/a',defaultVal=0.0_pReal)) - if(trim(phase%get_asString('lattice')) == 'bcc') then + if(trim(phase%get_asString('lattice')) == 'cI') then a = pl%get_asFloats('a_nonSchmid',defaultVal = emptyRealArray) prm%nonSchmid_pos = lattice_nonSchmidMatrix(N_sl,a,+1) prm%nonSchmid_neg = lattice_nonSchmidMatrix(N_sl,a,-1) @@ -180,7 +180,7 @@ module function plastic_disloTungsten_init() result(myPlasticity) prm%f_at = 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.) + prm%dipoleformation = .not. pl%get_asBool('no_dipole_formation', defaultVal = .false.) ! expand: family => system rho_mob_0 = math_expand(rho_mob_0, N_sl) @@ -262,17 +262,17 @@ module function plastic_disloTungsten_init() result(myPlasticity) !-------------------------------------------------------------------------------------------------- ! exit if any parameter is out of range - if (extmsg /= '') call IO_error(211,ext_msg=trim(extmsg)//'(disloTungsten)') + if (extmsg /= '') call IO_error(211,ext_msg=trim(extmsg)//'(dislotungsten)') enddo -end function plastic_disloTungsten_init +end function plastic_dislotungsten_init !-------------------------------------------------------------------------------------------------- !> @brief Calculate plastic velocity gradient and its tangent. !-------------------------------------------------------------------------------------------------- -pure module subroutine plastic_disloTungsten_LpAndItsTangent(Lp,dLp_dMp, & +pure module subroutine plastic_dislotungsten_LpAndItsTangent(Lp,dLp_dMp, & Mp,T,instance,of) real(pReal), dimension(3,3), intent(out) :: & Lp !< plastic velocity gradient @@ -309,13 +309,13 @@ pure module subroutine plastic_disloTungsten_LpAndItsTangent(Lp,dLp_dMp, & end associate -end subroutine plastic_disloTungsten_LpAndItsTangent +end subroutine plastic_dislotungsten_LpAndItsTangent !-------------------------------------------------------------------------------------------------- !> @brief Calculate the rate of change of microstructure. !-------------------------------------------------------------------------------------------------- -module subroutine plastic_disloTungsten_dotState(Mp,T,instance,of) +module subroutine plastic_dislotungsten_dotState(Mp,T,instance,of) real(pReal), dimension(3,3), intent(in) :: & Mp !< Mandel stress @@ -369,13 +369,13 @@ module subroutine plastic_disloTungsten_dotState(Mp,T,instance,of) end associate -end subroutine plastic_disloTungsten_dotState +end subroutine plastic_dislotungsten_dotState !-------------------------------------------------------------------------------------------------- !> @brief Calculate derived quantities from state. !-------------------------------------------------------------------------------------------------- -module subroutine plastic_disloTungsten_dependentState(instance,of) +module subroutine plastic_dislotungsten_dependentState(instance,of) integer, intent(in) :: & instance, & @@ -394,13 +394,13 @@ module subroutine plastic_disloTungsten_dependentState(instance,of) end associate -end subroutine plastic_disloTungsten_dependentState +end subroutine plastic_dislotungsten_dependentState !-------------------------------------------------------------------------------------------------- !> @brief Write results to HDF5 output file. !-------------------------------------------------------------------------------------------------- -module subroutine plastic_disloTungsten_results(instance,group) +module subroutine plastic_dislotungsten_results(instance,group) integer, intent(in) :: instance character(len=*), intent(in) :: group @@ -429,7 +429,7 @@ module subroutine plastic_disloTungsten_results(instance,group) enddo outputsLoop end associate -end subroutine plastic_disloTungsten_results +end subroutine plastic_dislotungsten_results !-------------------------------------------------------------------------------------------------- @@ -547,4 +547,4 @@ pure subroutine kinetics(Mp,T,instance,of, & end subroutine kinetics -end submodule plastic_disloTungsten +end submodule plastic_dislotungsten diff --git a/src/constitutive_plastic_dislotwin.f90 b/src/constitutive_plastic_dislotwin.f90 index e9273334b..4234a55b8 100644 --- a/src/constitutive_plastic_dislotwin.f90 +++ b/src/constitutive_plastic_dislotwin.f90 @@ -301,7 +301,7 @@ module function plastic_dislotwin_init() result(myPlasticity) prm%r = math_expand(prm%r,N_tw) ! sanity checks - if ( prm%x_c_tw < 0.0_pReal) extmsg = trim(extmsg)//' x_c_twin' + if ( prm%x_c_tw < 0.0_pReal) extmsg = trim(extmsg)//' x_c_tw' if ( prm%L_tw < 0.0_pReal) extmsg = trim(extmsg)//' L_tw' if ( prm%i_tw < 0.0_pReal) extmsg = trim(extmsg)//' i_tw' if (any(prm%b_tw < 0.0_pReal)) extmsg = trim(extmsg)//' b_tw' @@ -332,15 +332,15 @@ module function plastic_dislotwin_init() result(myPlasticity) prm%h_tr_tr = lattice_interaction_TransByTrans(N_tr,pl%get_asFloats('h_tr_tr'), & phase%get_asString('lattice')) - prm%C66_tr = lattice_C66_trans(N_tr,prm%C66,pl%get_asString('trans_lattice_structure'), & + prm%C66_tr = lattice_C66_trans(N_tr,prm%C66,pl%get_asString('lattice_tr'), & 0.0_pReal, & - pl%get_asFloat('a_bcc', defaultVal=0.0_pReal), & - pl%get_asFloat('a_fcc', defaultVal=0.0_pReal)) + pl%get_asFloat('a_cI', defaultVal=0.0_pReal), & + pl%get_asFloat('a_cF', defaultVal=0.0_pReal)) - prm%P_tr = lattice_SchmidMatrix_trans(N_tr,pl%get_asString('trans_lattice_structure'), & + prm%P_tr = lattice_SchmidMatrix_trans(N_tr,pl%get_asString('lattice_tr'), & 0.0_pReal, & - pl%get_asFloat('a_bcc', defaultVal=0.0_pReal), & - pl%get_asFloat('a_fcc', defaultVal=0.0_pReal)) + pl%get_asFloat('a_cI', defaultVal=0.0_pReal), & + pl%get_asFloat('a_cF', defaultVal=0.0_pReal)) if (lattice_structure(p) /= lattice_FCC_ID) then prm%dot_N_0_tr = pl%get_asFloats('dot_N_0_tr') @@ -352,7 +352,7 @@ module function plastic_dislotwin_init() result(myPlasticity) prm%s = math_expand(prm%s,N_tr) ! sanity checks - if ( prm%x_c_tr < 0.0_pReal) extmsg = trim(extmsg)//' x_c_trans' + if ( prm%x_c_tr < 0.0_pReal) extmsg = trim(extmsg)//' x_c_tr' if ( prm%L_tr < 0.0_pReal) extmsg = trim(extmsg)//' L_tr' if ( prm%i_tr < 0.0_pReal) extmsg = trim(extmsg)//' i_tr' if (any(prm%t_tr < 0.0_pReal)) extmsg = trim(extmsg)//' t_tr' diff --git a/src/constitutive_plastic_kinehardening.f90 b/src/constitutive_plastic_kinehardening.f90 index 02fa9312d..8454b28f8 100644 --- a/src/constitutive_plastic_kinehardening.f90 +++ b/src/constitutive_plastic_kinehardening.f90 @@ -125,7 +125,7 @@ module function plastic_kinehardening_init() result(myPlasticity) prm%P = lattice_SchmidMatrix_slip(N_sl,phase%get_asString('lattice'),& phase%get_asFloat('c/a',defaultVal=0.0_pReal)) - if(trim(phase%get_asString('lattice')) == 'bcc') then + if(trim(phase%get_asString('lattice')) == 'cI') then a = pl%get_asFloats('a_nonSchmid',defaultVal = emptyRealArray) if(size(a) > 0) prm%nonSchmidActive = .true. prm%nonSchmid_pos = lattice_nonSchmidMatrix(N_sl,a,+1) diff --git a/src/constitutive_plastic_nonlocal.f90 b/src/constitutive_plastic_nonlocal.f90 index 732958f0a..ce9e4e391 100644 --- a/src/constitutive_plastic_nonlocal.f90 +++ b/src/constitutive_plastic_nonlocal.f90 @@ -244,7 +244,7 @@ module function plastic_nonlocal_init() result(myPlasticity) prm%Schmid = lattice_SchmidMatrix_slip(ini%N_sl,phase%get_asString('lattice'),& phase%get_asFloat('c/a',defaultVal=0.0_pReal)) - if(trim(phase%get_asString('lattice')) == 'bcc') then + if(trim(phase%get_asString('lattice')) == 'cI') then a = pl%get_asFloats('a_nonSchmid',defaultVal = emptyRealArray) if(size(a) > 0) prm%nonSchmidActive = .true. prm%nonSchmid_pos = lattice_nonSchmidMatrix(ini%N_sl,a,+1) @@ -362,7 +362,7 @@ module function plastic_nonlocal_init() result(myPlasticity) if (prm%nu_a <= 0.0_pReal) extmsg = trim(extmsg)//' nu_a' if (prm%w <= 0.0_pReal) extmsg = trim(extmsg)//' w' if (prm%D_0 < 0.0_pReal) extmsg = trim(extmsg)//' D_0' - if (prm%V_at <= 0.0_pReal) extmsg = trim(extmsg)//' V_at' ! ToDo: in disloTungsten, the atomic volume is given as a factor + if (prm%V_at <= 0.0_pReal) extmsg = trim(extmsg)//' V_at' ! ToDo: in dislotungsten, the atomic volume is given as a factor if (prm%rho_min < 0.0_pReal) extmsg = trim(extmsg)//' rho_min' if (prm%rho_significant < 0.0_pReal) extmsg = trim(extmsg)//' rho_significant' diff --git a/src/constitutive_plastic_phenopowerlaw.f90 b/src/constitutive_plastic_phenopowerlaw.f90 index 00925e4ed..678acad27 100644 --- a/src/constitutive_plastic_phenopowerlaw.f90 +++ b/src/constitutive_plastic_phenopowerlaw.f90 @@ -120,7 +120,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity) prm%P_sl = lattice_SchmidMatrix_slip(N_sl,phase%get_asString('lattice'),& phase%get_asFloat('c/a',defaultVal=0.0_pReal)) - if(phase%get_asString('lattice') == 'bcc') then + if(phase%get_asString('lattice') == 'cI') then a = pl%get_asFloats('a_nonSchmid',defaultVal=emptyRealArray) if(size(a) > 0) prm%nonSchmidActive = .true. prm%nonSchmid_pos = lattice_nonSchmidMatrix(N_sl,a,+1) diff --git a/src/crystallite.f90 b/src/crystallite.f90 index 4944e04f2..da349bbcd 100644 --- a/src/crystallite.f90 +++ b/src/crystallite.f90 @@ -780,17 +780,17 @@ subroutine crystallite_results case('O') select case(lattice_structure(p)) case(lattice_ISO_ID) - structureLabel = 'iso' + structureLabel = 'aP' case(lattice_FCC_ID) - structureLabel = 'fcc' + structureLabel = 'cF' case(lattice_BCC_ID) - structureLabel = 'bcc' + structureLabel = 'cI' case(lattice_BCT_ID) - structureLabel = 'bct' + structureLabel = 'tI' case(lattice_HEX_ID) - structureLabel = 'hex' + structureLabel = 'hP' case(lattice_ORT_ID) - structureLabel = 'ort' + structureLabel = 'oP' end select selected_rotations = select_rotations(crystallite_orientation,p) call results_writeDataset(group,selected_rotations,output_constituent(p)%label(o),& diff --git a/src/lattice.f90 b/src/lattice.f90 index 19c6b5f2c..676232efe 100644 --- a/src/lattice.f90 +++ b/src/lattice.f90 @@ -17,7 +17,7 @@ module lattice private !-------------------------------------------------------------------------------------------------- -! face centered cubic +! face centered cubic (cF) integer, dimension(*), parameter :: & FCC_NSLIPSYSTEM = [12, 6] !< # of slip systems per family for fcc @@ -108,7 +108,7 @@ module lattice ],pReal),shape(FCC_SYSTEMCLEAVAGE)) !-------------------------------------------------------------------------------------------------- -! body centered cubic +! body centered cubic (cI) integer, dimension(*), parameter :: & BCC_NSLIPSYSTEM = [12, 12] !< # of slip systems per family for bcc @@ -186,7 +186,7 @@ module lattice ],pReal),shape(BCC_SYSTEMCLEAVAGE)) !-------------------------------------------------------------------------------------------------- -! hexagonal +! hexagonal (hP) integer, dimension(*), parameter :: & HEX_NSLIPSYSTEM = [3, 3, 3, 6, 12, 6] !< # of slip systems per family for hex @@ -279,7 +279,7 @@ module lattice ],pReal),shape(HEX_SYSTEMTWIN)) !< twin systems for hex, sorted by P. Eisenlohr CCW around starting next to a_1 axis !-------------------------------------------------------------------------------------------------- -! body centered tetragonal +! body centered tetragonal (tI) integer, dimension(*), parameter :: & BCT_NSLIPSYSTEM = [2, 2, 2, 4, 2, 4, 2, 2, 4, 8, 4, 8, 8 ] !< # of slip systems per family for bct (Sn) Bieler J. Electr Mater 2009 @@ -361,7 +361,7 @@ module lattice ],pReal),shape(BCT_SYSTEMSLIP)) !< slip systems for bct sorted by Bieler !-------------------------------------------------------------------------------------------------- -! orthorhombic +! orthorhombic primitive (oP) integer, dimension(*), parameter :: & ORT_NCLEAVAGESYSTEM = [1, 1, 1] !< # of cleavage systems per family for ortho @@ -457,7 +457,7 @@ subroutine lattice_init phase, & mech, & elasticity - + print'(/,a)', ' <<<+- lattice init -+>>>'; flush(IO_STDOUT) phases => config_material%get('phase') @@ -490,18 +490,18 @@ subroutine lattice_init lattice_C66(6,6,p) = elasticity%get_asFloat('C_66',defaultVal=0.0_pReal) select case(phase%get_asString('lattice')) - case('iso') - lattice_structure(p) = lattice_ISO_ID - case('fcc') + case('cF') lattice_structure(p) = lattice_FCC_ID - case('bcc') + case('cI') lattice_structure(p) = lattice_BCC_ID - case('hex') + case('hP') lattice_structure(p) = lattice_HEX_ID - case('bct') + case('tI') lattice_structure(p) = lattice_BCT_ID - case('ort') + case('oP') lattice_structure(p) = lattice_ORT_ID + case('aP') + lattice_structure(p) = lattice_ISO_ID case default call IO_error(130,ext_msg='lattice_init: '//phase%get_asString('lattice')) end select @@ -593,9 +593,9 @@ function lattice_characteristicShear_Twin(Ntwin,structure,CoverA) result(charact mySystems: do s = 1,Ntwin(f) a = a + 1 select case(structure) - case('fcc','bcc') + case('cF','cI') characteristicShear(a) = 0.5_pReal*sqrt(2.0_pReal) - case('hex') + case('hP') if (cOverA < 1.0_pReal .or. cOverA > 2.0_pReal) & call IO_error(131,ext_msg='lattice_characteristicShear_Twin') p = sum(HEX_NTWINSYSTEM(1:f-1))+s @@ -634,15 +634,15 @@ function lattice_C66_twin(Ntwin,C66,structure,CoverA) integer :: i select case(structure) - case('fcc') + case('cF') coordinateSystem = buildCoordinateSystem(Ntwin,FCC_NSLIPSYSTEM,FCC_SYSTEMTWIN,& - trim(structure),0.0_pReal) - case('bcc') + structure,0.0_pReal) + case('cI') coordinateSystem = buildCoordinateSystem(Ntwin,BCC_NSLIPSYSTEM,BCC_SYSTEMTWIN,& - trim(structure),0.0_pReal) - case('hex') + structure,0.0_pReal) + case('hP') coordinateSystem = buildCoordinateSystem(Ntwin,HEX_NSLIPSYSTEM,HEX_SYSTEMTWIN,& - 'hex',cOverA) + structure,cOverA) case default call IO_error(137,ext_msg='lattice_C66_twin: '//trim(structure)) end select @@ -672,12 +672,9 @@ function lattice_C66_trans(Ntrans,C_parent66,structure_target, & real(pReal) :: a_bcc, a_fcc, cOverA_trans integer :: i - if (len_trim(structure_target) /= 3) & - call IO_error(137,ext_msg='lattice_C66_trans (target): '//trim(structure_target)) - !-------------------------------------------------------------------------------------------------- ! elasticity matrix of the target phase in cube orientation - if (structure_target(1:3) == 'hex') then + if (structure_target == 'hP') then if (cOverA_trans < 1.0_pReal .or. cOverA_trans > 2.0_pReal) & call IO_error(131,ext_msg='lattice_C66_trans: '//trim(structure_target)) C_bar66(1,1) = (C_parent66(1,1) + C_parent66(1,2) + 2.0_pReal*C_parent66(4,4))/2.0_pReal @@ -693,8 +690,8 @@ function lattice_C66_trans(Ntrans,C_parent66,structure_target, & C_target_unrotated66(1,3) = C_bar66(1,3) C_target_unrotated66(3,3) = C_bar66(3,3) C_target_unrotated66(4,4) = C_bar66(4,4) - C_bar66(1,4)**2.0_pReal/(0.5_pReal*(C_bar66(1,1) - C_bar66(1,2))) - C_target_unrotated66 = applyLatticeSymmetryC66(C_target_unrotated66,'hex') - elseif (structure_target(1:3) == 'bcc') then + C_target_unrotated66 = applyLatticeSymmetryC66(C_target_unrotated66,'hP') + elseif (structure_target == 'cI') then if (a_bcc <= 0.0_pReal .or. a_fcc <= 0.0_pReal) & call IO_error(134,ext_msg='lattice_C66_trans: '//trim(structure_target)) C_target_unrotated66 = C_parent66 @@ -737,9 +734,9 @@ function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSc if (abs(sense) /= 1) error stop 'Sense in lattice_nonSchmidMatrix' coordinateSystem = buildCoordinateSystem(Nslip,BCC_NSLIPSYSTEM,BCC_SYSTEMSLIP,& - 'bcc',0.0_pReal) + 'cI',0.0_pReal) coordinateSystem(1:3,1,1:sum(Nslip)) = coordinateSystem(1:3,1,1:sum(Nslip))*real(sense,pReal) ! convert unidirectional coordinate system - nonSchmidMatrix = lattice_SchmidMatrix_slip(Nslip,'bcc',0.0_pReal) ! Schmid contribution + nonSchmidMatrix = lattice_SchmidMatrix_slip(Nslip,'cI',0.0_pReal) ! Schmid contribution do i = 1,sum(Nslip) direction = coordinateSystem(1:3,1,i) @@ -961,16 +958,16 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul select case(structure) - case('fcc') + case('cF') interactionTypes = FCC_INTERACTIONSLIPSLIP NslipMax = FCC_NSLIPSYSTEM - case('bcc') + case('cI') interactionTypes = BCC_INTERACTIONSLIPSLIP NslipMax = BCC_NSLIPSYSTEM - case('hex') + case('hP') interactionTypes = HEX_INTERACTIONSLIPSLIP NslipMax = HEX_NSLIPSYSTEM - case('bct') + case('tI') interactionTypes = BCT_INTERACTIONSLIPSLIP NslipMax = BCT_NSLIPSYSTEM case default @@ -1062,13 +1059,13 @@ function lattice_interaction_TwinByTwin(Ntwin,interactionValues,structure) resul ],shape(HEX_INTERACTIONTWINTWIN)) !< Twin-twin interaction types for hex select case(structure) - case('fcc') + case('cF') interactionTypes = FCC_INTERACTIONTWINTWIN NtwinMax = FCC_NTWINSYSTEM - case('bcc') + case('cI') interactionTypes = BCC_INTERACTIONTWINTWIN NtwinMax = BCC_NTWINSYSTEM - case('hex') + case('hP') interactionTypes = HEX_INTERACTIONTWINTWIN NtwinMax = HEX_NTWINSYSTEM case default @@ -1110,7 +1107,7 @@ function lattice_interaction_TransByTrans(Ntrans,interactionValues,structure) re 2,2,2,2,2,2,2,2,2,1,1,1 & ],shape(FCC_INTERACTIONTRANSTRANS)) !< Trans-trans interaction types for fcc - if(structure == 'fcc') then + if(structure == 'cF') then interactionTypes = FCC_INTERACTIONTRANSTRANS NtransMax = FCC_NTRANSSYSTEM else @@ -1238,15 +1235,15 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure) ],shape(HEX_INTERACTIONSLIPTWIN)) !< Slip-twin interaction types for hex select case(structure) - case('fcc') + case('cF') interactionTypes = FCC_INTERACTIONSLIPTWIN NslipMax = FCC_NSLIPSYSTEM NtwinMax = FCC_NTWINSYSTEM - case('bcc') + case('cI') interactionTypes = BCC_INTERACTIONSLIPTWIN NslipMax = BCC_NSLIPSYSTEM NtwinMax = BCC_NTWINSYSTEM - case('hex') + case('hP') interactionTypes = HEX_INTERACTIONSLIPTWIN NslipMax = HEX_NSLIPSYSTEM NtwinMax = HEX_NTWINSYSTEM @@ -1299,7 +1296,7 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur ],shape(FCC_INTERACTIONSLIPTRANS)) !< Slip-trans interaction types for fcc select case(structure) - case('fcc') + case('cF') interactionTypes = FCC_INTERACTIONSLIPTRANS NslipMax = FCC_NSLIPSYSTEM NtransMax = FCC_NTRANSSYSTEM @@ -1366,15 +1363,15 @@ function lattice_interaction_TwinBySlip(Ntwin,Nslip,interactionValues,structure) ],shape(HEX_INTERACTIONTWINSLIP)) !< Twin-slip interaction types for hex select case(structure) - case('fcc') + case('cF') interactionTypes = FCC_INTERACTIONTWINSLIP NtwinMax = FCC_NTWINSYSTEM NslipMax = FCC_NSLIPSYSTEM - case('bcc') + case('cI') interactionTypes = BCC_INTERACTIONTWINSLIP NtwinMax = BCC_NTWINSYSTEM NslipMax = BCC_NSLIPSYSTEM - case('hex') + case('hP') interactionTypes = HEX_INTERACTIONTWINSLIP NtwinMax = HEX_NTWINSYSTEM NslipMax = HEX_NSLIPSYSTEM @@ -1404,16 +1401,16 @@ function lattice_SchmidMatrix_slip(Nslip,structure,cOverA) result(SchmidMatrix) integer :: i select case(structure) - case('fcc') + case('cF') NslipMax = FCC_NSLIPSYSTEM slipSystems = FCC_SYSTEMSLIP - case('bcc') + case('cI') NslipMax = BCC_NSLIPSYSTEM slipSystems = BCC_SYSTEMSLIP - case('hex') + case('hP') NslipMax = HEX_NSLIPSYSTEM slipSystems = HEX_SYSTEMSLIP - case('bct') + case('tI') NslipMax = BCT_NSLIPSYSTEM slipSystems = BCT_SYSTEMSLIP case default @@ -1454,13 +1451,13 @@ function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) result(SchmidMatrix) integer :: i select case(structure) - case('fcc') + case('cF') NtwinMax = FCC_NTWINSYSTEM twinSystems = FCC_SYSTEMTWIN - case('bcc') + case('cI') NtwinMax = BCC_NTWINSYSTEM twinSystems = BCC_SYSTEMTWIN - case('hex') + case('hP') NtwinMax = HEX_NTWINSYSTEM twinSystems = HEX_SYSTEMTWIN case default @@ -1498,15 +1495,13 @@ function lattice_SchmidMatrix_trans(Ntrans,structure_target,cOverA,a_bcc,a_fcc) real(pReal), dimension(3,3,sum(Ntrans)) :: devNull real(pReal) :: a_bcc, a_fcc - if (len_trim(structure_target) /= 3) & - call IO_error(137,ext_msg='lattice_SchmidMatrix_trans: '//trim(structure_target)) - if (structure_target(1:3) /= 'bcc' .and. structure_target(1:3) /= 'hex') & + if (structure_target /= 'cI' .and. structure_target /= 'hP') & call IO_error(137,ext_msg='lattice_SchmidMatrix_trans: '//trim(structure_target)) - if (structure_target(1:3) == 'hex' .and. (cOverA < 1.0_pReal .or. cOverA > 2.0_pReal)) & + if (structure_target == 'hP' .and. (cOverA < 1.0_pReal .or. cOverA > 2.0_pReal)) & call IO_error(131,ext_msg='lattice_SchmidMatrix_trans: '//trim(structure_target)) - if (structure_target(1:3) == 'bcc' .and. (a_bcc <= 0.0_pReal .or. a_fcc <= 0.0_pReal)) & + if (structure_target == 'cI' .and. (a_bcc <= 0.0_pReal .or. a_fcc <= 0.0_pReal)) & call IO_error(134,ext_msg='lattice_SchmidMatrix_trans: '//trim(structure_target)) call buildTransformationSystem(devNull,SchmidMatrix,Ntrans,cOverA,a_fcc,a_bcc) @@ -1531,13 +1526,13 @@ function lattice_SchmidMatrix_cleavage(Ncleavage,structure,cOverA) result(Schmid integer :: i select case(structure) - case('ort') + case('oP') NcleavageMax = ORT_NCLEAVAGESYSTEM cleavageSystems = ORT_SYSTEMCLEAVAGE - case('fcc') + case('cF') NcleavageMax = FCC_NCLEAVAGESYSTEM cleavageSystems = FCC_SYSTEMCLEAVAGE - case('bcc') + case('cI') NcleavageMax = BCC_NCLEAVAGESYSTEM cleavageSystems = BCC_SYSTEMCLEAVAGE case default @@ -1630,16 +1625,16 @@ function lattice_labels_slip(Nslip,structure) result(labels) integer, dimension(:), allocatable :: NslipMax select case(structure) - case('fcc') + case('cF') NslipMax = FCC_NSLIPSYSTEM slipSystems = FCC_SYSTEMSLIP - case('bcc') + case('cI') NslipMax = BCC_NSLIPSYSTEM slipSystems = BCC_SYSTEMSLIP - case('hex') + case('hP') NslipMax = HEX_NSLIPSYSTEM slipSystems = HEX_SYSTEMSLIP - case('bct') + case('tI') NslipMax = BCT_NSLIPSYSTEM slipSystems = BCT_SYSTEMSLIP case default @@ -1671,15 +1666,15 @@ function lattice_applyLatticeSymmetry33(T,structure) result(T_sym) T_sym = 0.0_pReal select case(structure) - case('iso','fcc','bcc') + case('aP','cF','cI') do k=1,3 T_sym(k,k) = T(1,1) enddo - case('hex') + case('hP') T_sym(1,1) = T(1,1) T_sym(2,2) = T(1,1) T_sym(3,3) = T(3,3) - case('ort','bct') + case('oP','tI') T_sym(1,1) = T(1,1) T_sym(2,2) = T(2,2) T_sym(3,3) = T(3,3) @@ -1706,7 +1701,7 @@ function applyLatticeSymmetryC66(C66,structure) result(C66_sym) C66_sym = 0.0_pReal select case(structure) - case ('iso') + case ('aP') do k=1,3 do j=1,3 C66_sym(k,j) = C66(1,2) @@ -1714,7 +1709,7 @@ function applyLatticeSymmetryC66(C66,structure) result(C66_sym) C66_sym(k,k) = C66(1,1) C66_sym(k+3,k+3) = 0.5_pReal*(C66(1,1)-C66(1,2)) enddo - case ('fcc','bcc') + case ('cF','cI') do k=1,3 do j=1,3 C66_sym(k,j) = C66(1,2) @@ -1722,7 +1717,7 @@ function applyLatticeSymmetryC66(C66,structure) result(C66_sym) C66_sym(k,k) = C66(1,1) C66_sym(k+3,k+3) = C66(4,4) enddo - case ('hex') + case ('hP') C66_sym(1,1) = C66(1,1) C66_sym(2,2) = C66(1,1) C66_sym(3,3) = C66(3,3) @@ -1735,7 +1730,7 @@ function applyLatticeSymmetryC66(C66,structure) result(C66_sym) C66_sym(4,4) = C66(4,4) C66_sym(5,5) = C66(4,4) C66_sym(6,6) = 0.5_pReal*(C66(1,1)-C66(1,2)) - case ('ort') + case ('oP') C66_sym(1,1) = C66(1,1) C66_sym(2,2) = C66(2,2) C66_sym(3,3) = C66(3,3) @@ -1748,7 +1743,7 @@ function applyLatticeSymmetryC66(C66,structure) result(C66_sym) C66_sym(4,4) = C66(4,4) C66_sym(5,5) = C66(5,5) C66_sym(6,6) = C66(6,6) - case ('bct') + case ('tI') C66_sym(1,1) = C66(1,1) C66_sym(2,2) = C66(1,1) C66_sym(3,3) = C66(3,3) @@ -1783,13 +1778,13 @@ function lattice_labels_twin(Ntwin,structure) result(labels) integer, dimension(:), allocatable :: NtwinMax select case(structure) - case('fcc') + case('cF') NtwinMax = FCC_NTWINSYSTEM twinSystems = FCC_SYSTEMTWIN - case('bcc') + case('cI') NtwinMax = BCC_NTWINSYSTEM twinSystems = BCC_SYSTEMTWIN - case('hex') + case('hP') NtwinMax = HEX_NTWINSYSTEM twinSystems = HEX_SYSTEMTWIN case default @@ -1869,16 +1864,16 @@ function coordinateSystem_slip(Nslip,structure,cOverA) result(coordinateSystem) integer, dimension(:), allocatable :: NslipMax select case(structure) - case('fcc') + case('cF') NslipMax = FCC_NSLIPSYSTEM slipSystems = FCC_SYSTEMSLIP - case('bcc') + case('cI') NslipMax = BCC_NSLIPSYSTEM slipSystems = BCC_SYSTEMSLIP - case('hex') + case('hP') NslipMax = HEX_NSLIPSYSTEM slipSystems = HEX_SYSTEMSLIP - case('bct') + case('tI') NslipMax = BCT_NSLIPSYSTEM slipSystems = BCT_SYSTEMSLIP case default @@ -1965,11 +1960,9 @@ function buildCoordinateSystem(active,potential,system,structure,cOverA) f, & !< index of my family s !< index of my system in current family - if (len_trim(structure) /= 3) & - call IO_error(137,ext_msg='buildCoordinateSystem: '//trim(structure)) - if (trim(structure) == 'bct' .and. cOverA > 2.0_pReal) & + if (structure == 'tI' .and. cOverA > 2.0_pReal) & call IO_error(131,ext_msg='buildCoordinateSystem:'//trim(structure)) - if (trim(structure) == 'hex' .and. (cOverA < 1.0_pReal .or. cOverA > 2.0_pReal)) & + if (structure == 'hP' .and. (cOverA < 1.0_pReal .or. cOverA > 2.0_pReal)) & call IO_error(131,ext_msg='buildCoordinateSystem:'//trim(structure)) a = 0 @@ -1978,13 +1971,13 @@ function buildCoordinateSystem(active,potential,system,structure,cOverA) a = a + 1 p = sum(potential(1:f-1))+s - select case(trim(structure)) + select case(structure) - case ('fcc','bcc','iso','ort','bct') + case ('cF','cI','aP','oP','tI') direction = system(1:3,p) normal = system(4:6,p) - case ('hex') + case ('hP') direction = [ system(1,p)*1.5_pReal, & (system(1,p)+2.0_pReal*system(2,p))*sqrt(0.75_pReal), & system(4,p)*cOverA ] ! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(p/a)]) @@ -2267,15 +2260,15 @@ subroutine selfTest call random_number(r) system = reshape([1.0_pReal+r(1),0.0_pReal,0.0_pReal, 0.0_pReal,1.0_pReal+r(2),0.0_pReal],[6,1]) - CoSy = buildCoordinateSystem([1],[1],system,'fcc',0.0_pReal) + CoSy = buildCoordinateSystem([1],[1],system,'cF',0.0_pReal) if(any(dNeq(CoSy(1:3,1:3,1),math_I3))) error stop 'buildCoordinateSystem' call random_number(C) C(1,1) = C(1,1) + 1.0_pReal - C = applyLatticeSymmetryC66(C,'iso') + C = applyLatticeSymmetryC66(C,'aP') if(dNeq(C(6,6),equivalent_mu(C,'voigt'),1.0e-12_pReal)) error stop 'equivalent_mu/voigt' if(dNeq(C(6,6),equivalent_mu(C,'voigt'),1.0e-12_pReal)) error stop 'equivalent_mu/reuss' - + lambda = C(1,2) if(dNeq(lambda*0.5_pReal/(lambda+equivalent_mu(C,'voigt')),equivalent_nu(C,'voigt'),1.0e-12_pReal)) & error stop 'equivalent_nu/voigt' diff --git a/src/results.f90 b/src/results.f90 index 9d3dbdbdb..bf276f561 100644 --- a/src/results.f90 +++ b/src/results.f90 @@ -74,10 +74,10 @@ subroutine results_init(restart) if(.not. restart) then resultsFile = HDF5_openFile(trim(getSolverJobName())//'.hdf5','w',.true.) call results_addAttribute('DADF5_version_major',0) - call results_addAttribute('DADF5_version_minor',8) + call results_addAttribute('DADF5_version_minor',9) call results_addAttribute('DAMASK_version',DAMASKVERSION) call get_command(commandLine) - call results_addAttribute('call',trim(commandLine)) + call results_addAttribute('Call',trim(commandLine)) call results_closeGroup(results_addGroup('mapping')) call results_closeJobFile endif