1. 引言
针对【3DEC统计剪切和拉伸接触的数量】塑性状态指示器的判别算法,可以作两点改进:一个是使用FISH内置的位函数math.and,另一个是发展一个通用判别算法。
2. math.and函数
当进行位运算时,使用位函数math.and比之前的方法更不容易出错,对于摩尔-库伦模型,基本的位值有4个:
fish define getState( state )
if ( state == 0 ) then
io.out('never yielded')
end_if
if ( math.and( 1, state ) == 1 ) then
io.out('shear-n')
end_if
if ( math.and( 2, state ) == 2 ) then
io.out('tension-n')
end_if
if ( math.and( 4, state ) == 4 ) then
io.out('shear-p')
end_if
if ( math.and( 8, state ) == 8 ) then
io.out('tension-p')
end_if
end
3. 通用算法
根据基本的4种状态,进行组合,共可以获得14种相对有效的组合
state = ['slip-n', 'tension-n', 'slip-p', 'tension-p']
s_1 = list(itertools.combinations(state, 1))
s_2 = list(itertools.combinations(state, 2))
s_3 = list(itertools.combinations(state, 3))
['slip-n']
这样作的优点是让代码自动统计出所有可能的状态的数量,不需要对每个项目改动代码。