Skip to content

Commit f6aac04

Browse files
author
Javier Velo
committed
Merge branch '2024-10-24_polishing' into 'development'
polishing 2024-10-24 See merge request damask/DAMASK!993
2 parents 74ce240 + ac9b7f0 commit f6aac04

File tree

5 files changed

+25
-16
lines changed

5 files changed

+25
-16
lines changed

examples/config/phase/mechanical/elastic/Hooke_X6CrNiMo17-12-2.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ references:
66
https://doi.org/10.1007/s11661-006-0129-4,
77
fit to Fig. 6 (solid lines, T_min=0°C, T_max=600°C)
88

9-
C_11: 118.6e+9
10-
C_11,T: -5.491e+7
9+
C_11: 229.0e+9
10+
C_11,T: -1.058e+8
1111

1212
C_12: 154.2e+9
1313
C_12,T: -6.059e+7
1414

15-
C_44: 229.0e+9
16-
C_44,T: -1.058e+8
15+
C_44: 118.6e+9
16+
C_44,T: -5.491e+7
1717

1818
T_ref: 293.15

examples/config/phase/mechanical/plastic/dislotwin_IF-steel.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ N_sl: [12, 12]
1414

1515
f_edge: [1.0, 1.0]
1616
b_sl: [2.49e-10, 2.49e-10]
17-
rho_mob_0: [2.81e+12, 2.8e+12]
17+
rho_mob_0: [2.81e+12, 2.81e+12]
1818
rho_dip_0: [1.0, 1.0] # not given
1919
v_0: [1.4e+3, 1.4e+3]
2020
Q_sl: [1.57e-19, 1.57e-19] # Delta_F

src/constants.f90

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ module constants
2727
STATUS_FAIL_PHASE_MECHANICAL_STATE, &
2828
STATUS_FAIL_PHASE_MECHANICAL_DELTASTATE, &
2929
STATUS_FAIL_PHASE_MECHANICAL_STRESS, &
30+
STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_MAXIT, &
31+
STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_NAN, &
32+
STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_DGESV, &
3033
STATUS_FAIL_PHASE_DAMAGE, &
3134
STATUS_FAIL_PHASE_DAMAGE_STATE, &
3235
STATUS_FAIL_PHASE_DAMAGE_DELTASTATE, &

src/grid/grid_thermal_spectral.f90

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ function grid_thermal_spectral_solution(Delta_t) result(solution)
237237

238238
if (solution%converged) &
239239
print'(/,1x,a)', '... thermal conduction converged ..................................'
240-
print'(/,1x,a,f8.4,2x,f8.4,2x,f8.4)', 'Minimum|Maximum|Delta Temperature / K = ', T_min, T_max, stagNorm
240+
print'(/,1x,a,f8.3,2x,f8.3,2x,f8.4)', 'Minimum|Maximum|Delta Temperature / K = ', T_min, T_max, stagNorm
241241
print'(/,1x,a)', '==========================================================================='
242242
flush(IO_STDOUT)
243243

src/phase_mechanical.f90

+16-10
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ function integrateStress(F,Fp0,Fi0,Delta_t,ph,en) result(status)
449449

450450
jacoCounterLi = 0
451451
steplengthLi = 1.0_pREAL
452-
residuumLi_old = 0.0_pREAL
452+
residuumLi_old = huge(1.0_pREAL)
453453
Liguess_old = Liguess
454454

455455
NiterationStressLi = 0
@@ -462,32 +462,35 @@ function integrateStress(F,Fp0,Fi0,Delta_t,ph,en) result(status)
462462

463463
jacoCounterLp = 0
464464
steplengthLp = 1.0_pREAL
465-
residuumLp_old = 0.0_pREAL
465+
residuumLp_old = huge(1.0_pREAL)
466466
Lpguess_old = Lpguess
467467

468468
NiterationStressLp = 0
469469
LpLoop: do
470470
NiterationStressLp = NiterationStressLp + 1
471-
if (NiterationStressLp>num%nStress_Lp) return ! error
472-
471+
if (NiterationStressLp>num%nStress_Lp) then
472+
status = STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_MAXIT
473+
return
474+
endif
473475
B = math_I3 - Delta_t*Lpguess
474476
Fe = matmul(matmul(A,B), invFi_new)
475477
call phase_hooke_SandItsTangents(S, dS_dFe, dS_dFi, &
476-
Fe, Fi_new, ph, en)
478+
Fe, Fi_new, ph, en)
477479

478480
call plastic_LpAndItsTangents(Lp_constitutive, dLp_dS, dLp_dFi, &
479-
S, Fi_new, ph,en)
481+
S, Fi_new, ph,en)
480482

481483
!* update current residuum and check for convergence of loop
482484
atol_Lp = max(num%rtol_Lp * max(norm2(Lpguess),norm2(Lp_constitutive)), & ! absolute tolerance from largest acceptable relative error
483485
num%atol_Lp) ! minimum lower cutoff
484486
residuumLp = Lpguess - Lp_constitutive
485487

486488
if (any(IEEE_is_NaN(residuumLp))) then
487-
return ! error
489+
status = STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_NAN
490+
return
488491
elseif (norm2(residuumLp) < atol_Lp) then ! converged if below absolute tolerance
489492
exit LpLoop
490-
elseif (NiterationStressLp == 1 .or. norm2(residuumLp) < norm2(residuumLp_old)) then ! not converged, but improved norm of residuum (always proceed in first iteration)...
493+
elseif (norm2(residuumLp) < norm2(residuumLp_old)) then ! not converged, but improved norm of residuum...
491494
residuumLp_old = residuumLp ! ...remember old values and...
492495
Lpguess_old = Lpguess
493496
steplengthLp = 1.0_pREAL ! ...proceed with normal step length (calculate new search direction)
@@ -508,7 +511,10 @@ function integrateStress(F,Fp0,Fi0,Delta_t,ph,en) result(status)
508511
- math_3333to99(math_mul3333xx3333(math_mul3333xx3333(dLp_dS,dS_dFe),dFe_dLp))
509512
temp_9 = math_33to9(residuumLp)
510513
call dgesv(9,1,dRLp_dLp,9,devNull_9,temp_9,9,ierr) ! solve dRLp/dLp * delta Lp = -res for delta Lp
511-
if (ierr /= 0) return ! error
514+
if (ierr /= 0) then
515+
status = STATUS_FAIL_PHASE_MECHANICAL_STRESS_LP_DGESV
516+
return
517+
end if
512518
deltaLp = - math_9to33(temp_9)
513519
end if calculateJacobiLp
514520

@@ -527,7 +533,7 @@ function integrateStress(F,Fp0,Fi0,Delta_t,ph,en) result(status)
527533
return ! error
528534
elseif (norm2(residuumLi) < atol_Li) then ! converged if below absolute tolerance
529535
exit LiLoop
530-
elseif (NiterationStressLi == 1 .or. norm2(residuumLi) < norm2(residuumLi_old)) then ! not converged, but improved norm of residuum (always proceed in first iteration)...
536+
elseif (norm2(residuumLi) < norm2(residuumLi_old)) then ! not converged, but improved norm of residuum ...
531537
residuumLi_old = residuumLi ! ...remember old values and...
532538
Liguess_old = Liguess
533539
steplengthLi = 1.0_pREAL ! ...proceed with normal step length (calculate new search direction)

0 commit comments

Comments
 (0)