vectorized
There seems to be a bug in the interaction matrix, there should be no transpose. However, the transpose recovers the old behavior (up to machine precision)
This commit is contained in:
parent
8d5d31988a
commit
9d6bd1cb77
|
@ -706,9 +706,8 @@ module subroutine plastic_nonlocal_dependentState(F, Fp, ip, el)
|
||||||
myInteractionMatrix = prm%interactionSlipSlip
|
myInteractionMatrix = prm%interactionSlipSlip
|
||||||
endif
|
endif
|
||||||
|
|
||||||
forall (s = 1:ns) dst%tau_pass(s,of) = prm%mu * prm%burgers(s) &
|
dst%tau_pass(:,of) = prm%mu * prm%burgers &
|
||||||
* sqrt(dot_product(sum(abs(rho),2), myInteractionMatrix(:,s)))
|
* sqrt(matmul(transpose(myInteractionMatrix),sum(abs(rho),2))) ! ToDo: MD the transpose seems wrong here (cf other laws)
|
||||||
|
|
||||||
|
|
||||||
!*** calculate the dislocation stress of the neighboring excess dislocation densities
|
!*** calculate the dislocation stress of the neighboring excess dislocation densities
|
||||||
!*** zero for material points of local plasticity
|
!*** zero for material points of local plasticity
|
||||||
|
@ -754,8 +753,8 @@ module subroutine plastic_nonlocal_dependentState(F, Fp, ip, el)
|
||||||
connection_latticeConf(1:3,n) = matmul(invFe, discretization_IPcoords(1:3,neighbor_el+neighbor_ip-1) &
|
connection_latticeConf(1:3,n) = matmul(invFe, discretization_IPcoords(1:3,neighbor_el+neighbor_ip-1) &
|
||||||
- discretization_IPcoords(1:3,el+neighbor_ip-1))
|
- discretization_IPcoords(1:3,el+neighbor_ip-1))
|
||||||
normal_latticeConf = matmul(transpose(invFp), IPareaNormal(1:3,n,ip,el))
|
normal_latticeConf = matmul(transpose(invFp), IPareaNormal(1:3,n,ip,el))
|
||||||
if (math_inner(normal_latticeConf,connection_latticeConf(1:3,n)) < 0.0_pReal) & ! neighboring connection points in opposite direction to face normal: must be periodic image
|
if (math_inner(normal_latticeConf,connection_latticeConf(1:3,n)) < 0.0_pReal) & ! neighboring connection points in opposite direction to face normal: must be periodic image
|
||||||
connection_latticeConf(1:3,n) = normal_latticeConf * IPvolume(ip,el)/IParea(n,ip,el) ! instead take the surface normal scaled with the diameter of the cell
|
connection_latticeConf(1:3,n) = normal_latticeConf * IPvolume(ip,el)/IParea(n,ip,el) ! instead take the surface normal scaled with the diameter of the cell
|
||||||
else
|
else
|
||||||
! local neighbor or different lattice structure or different constitution instance -> use central values instead
|
! local neighbor or different lattice structure or different constitution instance -> use central values instead
|
||||||
connection_latticeConf(1:3,n) = 0.0_pReal
|
connection_latticeConf(1:3,n) = 0.0_pReal
|
||||||
|
|
Loading…
Reference in New Issue