From 269eacb11d7ad6b8694e2dc717fbe9ab27aec50e Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 28 Jul 2017 13:44:17 -0400 Subject: [PATCH 1/3] added flag for skipping right-handedness check of eigenvector basis separate names for min,mid,max eigvals and vecs --- processing/post/addSpectralDecomposition.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/processing/post/addSpectralDecomposition.py b/processing/post/addSpectralDecomposition.py index 3c44a16bc..f02133f1c 100755 --- a/processing/post/addSpectralDecomposition.py +++ b/processing/post/addSpectralDecomposition.py @@ -22,7 +22,13 @@ parser.add_option('-t','--tensor', dest = 'tensor', action = 'extend', metavar = '', help = 'heading of columns containing tensor field values') +parser.add_option('--no-check', + dest = 'rh', + action = 'store_false', + help = 'skip check for right-handed eigenvector basis') +parser.set_defaults(rh = True, + ) (options,filenames) = parser.parse_args() if options.tensor is None: @@ -57,8 +63,10 @@ for name in filenames: if dim != data['dim']: remarks.append('column {} is not a {}...'.format(what,type)) else: items[type]['column'].append(table.label_index(what)) - table.labels_append(['{}_eigval({})'.format(i+1,what) for i in range(3)]) # extend ASCII header with new labels - table.labels_append(['{}_eigvec({})'.format(i+1,what) for i in range(9)]) # extend ASCII header with new labels + for order in ['Min','Mid','Max']: + table.labels_append(['eigval{}({})'.format(order,what)]) # extend ASCII header with new labels + for order in ['Min','Mid','Max']: + table.labels_append(['{}_eigvec{}({})'.format(i+1,order,what) for i in range(3)]) # extend ASCII header with new labels if remarks != []: damask.util.croak(remarks) if errors != []: @@ -78,10 +86,10 @@ for name in filenames: for type, data in items.iteritems(): for column in data['column']: (u,v) = np.linalg.eigh(np.array(map(float,table.data[column:column+data['dim']])).reshape(data['shape'])) - if np.dot(np.cross(v[:,0], v[:,1]), v[:,2]) < 0.0 : v[:, 2] *= -1.0 # ensure right-handed coordinate system - table.data_append(list(u)) - table.data_append(list(v.transpose().reshape(data['dim']))) - outputAlive = table.data_write() # output processed line + if options.rh and np.dot(np.cross(v[:,0], v[:,1]), v[:,2]) < 0.0 : v[:, 2] *= -1.0 # ensure right-handed eigenvector basis + table.data_append(list(u)) # vector of max,mid,min eigval + table.data_append(list(v.transpose().reshape(data['dim']))) # 3x3=9 combo vector of max,mid,min eigvec coordinates + outputAlive = table.data_write() # output processed line in accordance with column labeling # ------------------------------------------ output finalization ----------------------------------- From 56f7836bf80795d1ccd448ad833644f15f4bf1bd Mon Sep 17 00:00:00 2001 From: Zhuowen Zhao Date: Mon, 18 Sep 2017 19:42:27 -0400 Subject: [PATCH 2/3] clarified composition of overall sizeState --- src/plastic_isotropic.f90 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plastic_isotropic.f90 b/src/plastic_isotropic.f90 index bea9c616e..54cb241c2 100644 --- a/src/plastic_isotropic.f90 +++ b/src/plastic_isotropic.f90 @@ -60,15 +60,18 @@ module plastic_isotropic flowstress, & accumulatedShear end type + type, private :: tIsotropicAbsTol !< internal alias for abs tolerance in state real(pReal), pointer :: & ! scalars along NipcMyInstance flowstress, & accumulatedShear end type + type(tIsotropicState), allocatable, dimension(:), private :: & !< state aliases per instance state, & state0, & dotState + type(tIsotropicAbsTol), allocatable, dimension(:), private :: & !< state aliases per instance stateAbsTol @@ -140,7 +143,7 @@ subroutine plastic_isotropic_init(fileUnit) extmsg = '' character(len=64) :: & outputtag = '' - integer(pInt) :: NipcMyPhase + integer(pInt) :: NipcMyPhase write(6,'(/,a)') ' <<<+- constitutive_'//PLASTICITY_ISOTROPIC_label//' init -+>>>' write(6,'(a15,a)') ' Current time: ',IO_timeStamp() @@ -293,9 +296,9 @@ subroutine plastic_isotropic_init(fileUnit) !-------------------------------------------------------------------------------------------------- ! allocate state arrays - sizeState = 2_pInt ! flowstress, accumulated_shear - sizeDotState = sizeState ! both evolve + sizeDotState = 2_pInt ! flowstress, accumulated_shear sizeDeltaState = 0_pInt ! no sudden jumps in state + sizeState = sizeDotState + sizeDeltaState plasticState(phase)%sizeState = sizeState plasticState(phase)%sizeDotState = sizeDotState plasticState(phase)%sizeDeltaState = sizeDeltaState @@ -418,7 +421,7 @@ subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,ipc,ip,el) * ( sqrt(1.5_pReal) * norm_Tstar_dev / param(instance)%fTaylor / state(instance)%flowstress(of) ) & **param(instance)%n - Lp = Tstar_dev_33/norm_Tstar_dev * gamma_dot/param(instance)%fTaylor + Lp = Tstar_dev_33/norm_Tstar_dev * gamma_dot/param(instance)%fTaylor if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0_pInt & .and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) & From 40ca9d249a8e18993158bfdb0926f702a17997ac Mon Sep 17 00:00:00 2001 From: Tias Maiti Date: Fri, 29 Sep 2017 15:35:02 -0700 Subject: [PATCH 3/3] added phase material configuration for buffer layers in free surface simuations --- .../Phase_Isotropic_FreeSurface.config | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 examples/ConfigFiles/Phase_Isotropic_FreeSurface.config diff --git a/examples/ConfigFiles/Phase_Isotropic_FreeSurface.config b/examples/ConfigFiles/Phase_Isotropic_FreeSurface.config new file mode 100644 index 000000000..80f65ff46 --- /dev/null +++ b/examples/ConfigFiles/Phase_Isotropic_FreeSurface.config @@ -0,0 +1,25 @@ +[Air] + +## Isotropic Material model to simulate free surfaces ## +## For more information see paper Maiti+Eisenlohr2018, Scripta Materialia, +## "Fourier-based spectral method solution to finite strain crystal plasticity with free surfaces" + +elasticity hooke +plasticity isotropic + +/dilatation/ + +(output) flowstress +(output) strainrate + +lattice_structure isotropic +c11 110.9e9 +c12 0.0 +taylorfactor 3 +tau0 31e6 +gdot0 0.001 +n 20 +h0 75e6 +tausat 63e6 +w0 2.25 +atol_resistance 1 \ No newline at end of file