From 7f0c782602d238c0c672baa563ec7b488a5ef7c6 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 24 Jan 2024 15:48:43 +0100 Subject: [PATCH] avoid repeated allocation of a_nS leads to segmentation fault --- src/phase_mechanical_plastic_kinehardening.f90 | 1 + src/phase_mechanical_plastic_nonlocal.f90 | 3 ++- src/phase_mechanical_plastic_phenopowerlaw.f90 | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/phase_mechanical_plastic_kinehardening.f90 b/src/phase_mechanical_plastic_kinehardening.f90 index 47dce0ce5..039579dc8 100644 --- a/src/phase_mechanical_plastic_kinehardening.f90 +++ b/src/phase_mechanical_plastic_kinehardening.f90 @@ -145,6 +145,7 @@ module function plastic_kinehardening_init() result(myPlasticity) a_nS(1,:) = pl%get_as1dReal('a_nonSchmid_110',defaultVal=emptyRealArray) prm%P_nS_pos = crystal_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=+1) prm%P_nS_neg = crystal_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=-1) + deallocate(a_nS) else prm%P_nS_pos = +prm%P prm%P_nS_neg = -prm%P diff --git a/src/phase_mechanical_plastic_nonlocal.f90 b/src/phase_mechanical_plastic_nonlocal.f90 index 3af650f1d..2fce19107 100644 --- a/src/phase_mechanical_plastic_nonlocal.f90 +++ b/src/phase_mechanical_plastic_nonlocal.f90 @@ -244,9 +244,10 @@ module function plastic_nonlocal_init() result(myPlasticity) if (phase_lattice(ph) == 'cI') then allocate(a_nS(3,size(pl%get_as1dReal('a_nonSchmid_110',defaultVal=emptyRealArray))),source=0.0_pREAL) ! anticipating parameters for all three families - a_nS(1,:) = pl%get_as1dReal('a_nonSchmid_110',defaultVal=emptyRealArray) + a_nS(1,:) = pl%get_as1dReal('a_nonSchmid_110',defaultVal=emptyRealArray) prm%P_nS_pos = crystal_SchmidMatrix_slip(ini%N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=+1) prm%P_nS_neg = crystal_SchmidMatrix_slip(ini%N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=-1) + deallocate(a_nS) else prm%P_nS_pos = +prm%P_sl prm%P_nS_neg = -prm%P_sl diff --git a/src/phase_mechanical_plastic_phenopowerlaw.f90 b/src/phase_mechanical_plastic_phenopowerlaw.f90 index 095f72b74..c1767184b 100644 --- a/src/phase_mechanical_plastic_phenopowerlaw.f90 +++ b/src/phase_mechanical_plastic_phenopowerlaw.f90 @@ -162,6 +162,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity) a_nS(1,:) = pl%get_as1dReal('a_nonSchmid_110',defaultVal=emptyRealArray) prm%P_nS_pos = crystal_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=+1) prm%P_nS_neg = crystal_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph),nonSchmidCoefficients=a_nS,sense=-1) + deallocate(a_nS) else prm%P_nS_pos = +prm%P_sl prm%P_nS_neg = -prm%P_sl