Skip to content

Commit

Permalink
Increase compatibility with AD tools (#200)
Browse files Browse the repository at this point in the history
* hack for sparsity detection

* remove type constrains

* remove type constrains

* remove more type constrains

* fix
  • Loading branch information
albert-de-montserrat authored May 17, 2024
1 parent 962e0ca commit b84492c
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 12 deletions.
7 changes: 5 additions & 2 deletions src/CompositeRheologies/NonlinearIterations.jl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ function local_iterations_εII(
iter = 0
ϵ = 2.0 * tol
τII_prev = τII

while ϵ > tol
iter += 1
#=
Expand All @@ -33,12 +34,14 @@ function local_iterations_εII(
τII -= f / dfdτII
=#
τII = @muladd τII + (εII - compute_εII(v, τII, args)) * inv(dεII_dτII(v, τII, args))

ϵ = abs(τII - τII_prev) * inv(τII)
τII_prev = τII

# @print(verbose, " iter $(iter) $ϵ")

T_check = ϵ isa Union{AbstractFloat,Integer}
!(T_check) && break
end

# @print(verbose, "final τII = $τII")
# @print(verbose, "---")

Expand Down
10 changes: 5 additions & 5 deletions src/Plasticity/DruckerPrager.jl
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ end

# Calculation routines
function (s::DruckerPrager{_T, U, U1, S, S})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), EII=zero(_T), kwargs...
) where {_T,U,U1,S<:AbstractSoftening}
@unpack_val sinϕ, cosϕ, ϕ, C = s
ϕ = s.softening_ϕ(EII, ϕ)
Expand All @@ -68,7 +68,7 @@ function (s::DruckerPrager{_T, U, U1, S, S})(;
end

function (s::DruckerPrager{_T, U, U1, NoSoftening, S})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), EII=zero(_T), kwargs...
) where {_T,U,U1,S}
@unpack_val sinϕ, cosϕ, ϕ, C = s
C = s.softening_C(EII, C)
Expand All @@ -78,7 +78,7 @@ function (s::DruckerPrager{_T, U, U1, NoSoftening, S})(;
end

function (s::DruckerPrager{_T, U, U1, S, NoSoftening})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), EII=zero(_T), kwargs...
) where {_T,U,U1,S}
@unpack_val sinϕ, cosϕ, ϕ, C = s
ϕ = s.softening_ϕ(EII, ϕ)
Expand All @@ -90,7 +90,7 @@ function (s::DruckerPrager{_T, U, U1, S, NoSoftening})(;
end

function (s::DruckerPrager{_T, U, U1, NoSoftening, NoSoftening})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), kwargs...
) where {_T,U,U1}
@unpack_val sinϕ, cosϕ, ϕ, C = s

Expand All @@ -104,7 +104,7 @@ end
Computes the plastic yield function `F` for a given second invariant of the deviatoric stress tensor `τII`, `P` pressure, and `Pf` fluid pressure.
"""
function compute_yieldfunction(
s::DruckerPrager{_T}; P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), EII::_T=zero(_T)
s::DruckerPrager{_T}; P=zero(_T), τII=zero(_T), Pf=zero(_T), EII=zero(_T)
) where {_T}
return s(; P=P, τII=τII, Pf=Pf, EII=EII)
end
Expand Down
10 changes: 5 additions & 5 deletions src/Plasticity/DruckerPrager_regularised.jl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ end

# Calculation routines
function (s::DruckerPrager_regularised{_T})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), λ::_T= zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), λ= zero(_T), EII=zero(_T), kwargs...
) where {_T}
@unpack_val sinϕ, cosϕ, ϕ, C, η_vp = s
ϕ = s.softening_ϕ(EII, ϕ)
Expand All @@ -68,7 +68,7 @@ function (s::DruckerPrager_regularised{_T})(;
end

function (s::DruckerPrager_regularised{_T,U,U1,NoSoftening, S})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), λ::_T= zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), λ= zero(_T), EII=zero(_T), kwargs...
) where {_T,U,U1,S}
@unpack_val sinϕ, cosϕ, ϕ, C, η_vp = s
C = s.softening_C(EII, C)
Expand All @@ -78,7 +78,7 @@ function (s::DruckerPrager_regularised{_T,U,U1,NoSoftening, S})(;
end

function (s::DruckerPrager_regularised{_T,U,U1,S, NoSoftening})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), λ::_T= zero(_T), EII::_T=zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), λ= zero(_T), EII=zero(_T), kwargs...
) where {_T,U,U1,S}
@unpack_val sinϕ, cosϕ, ϕ, C, η_vp = s
ϕ = s.softening_ϕ(EII, ϕ)
Expand All @@ -89,7 +89,7 @@ function (s::DruckerPrager_regularised{_T,U,U1,S, NoSoftening})(;
end

function (s::DruckerPrager_regularised{_T,U,U1,NoSoftening,NoSoftening})(;
P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), λ::_T= zero(_T), kwargs...
P=zero(_T), τII=zero(_T), Pf=zero(_T), λ= zero(_T), kwargs...
) where {_T,U,U1}
@unpack_val sinϕ, cosϕ, ϕ, C, η_vp = s
ε̇II_pl = λ*∂Q∂τII(s, τII) # plastic strainrate
Expand All @@ -105,7 +105,7 @@ end
Computes the plastic yield function `F` for a given second invariant of the deviatoric stress tensor `τII`, `P` pressure, and `Pf` fluid pressure.
"""
function compute_yieldfunction(
s::DruckerPrager_regularised{_T}; P::_T=zero(_T), τII::_T=zero(_T), Pf::_T=zero(_T), λ::_T=zero(_T), EII::_T=zero(_T)
s::DruckerPrager_regularised{_T}; P=zero(_T), τII=zero(_T), Pf=zero(_T), λ=zero(_T), EII=zero(_T)
) where {_T}
return s(; P=P, τII=τII, Pf=Pf, λ=λ, EII=EII)
end
Expand Down

0 comments on commit b84492c

Please sign in to comment.