@@ -495,34 +495,38 @@ integer function check_dX(s, skip_hard_limit, dt, &
495
495
bdy_dist_dm, max_dX_bdy_dist_dm, max_dX_div_X_bdy_dist_dm, cz_dist_limit
496
496
integer :: i, j, k, cid, bdy, max_dX_j, max_dX_k, max_dX_div_X_j, max_dX_div_X_k
497
497
real (dp) :: D_mix_cutoff
498
- real (dp), dimension (max_dX_limit_ctrls) :: dX_limit_min_X, dX_limit, dX_hard_limit, &
499
- dX_div_X_limit_min_X, dX_div_X_limit, dX_div_X_hard_limit, &
500
- dX_div_X_at_high_T_limit, dX_div_X_at_high_T_hard_limit, &
501
- dX_div_X_at_high_T_limit_lgT_min
498
+ real (dp), dimension (max_dX_limit_ctrls) :: dX_limit, dX_hard_limit, &
499
+ dX_div_X_limit, dX_div_X_hard_limit
502
500
character (len= strlen) :: sp
503
501
504
502
include ' formats'
505
503
506
504
check_dX = keep_going
507
505
508
506
if (s% mix_factor == 0d0 .and. s% dxdt_nuc_factor == 0d0 ) return
509
-
510
- dX_limit = s% dX_limit* s% time_delta_coeff
511
- dX_hard_limit = s% dX_hard_limit* s% time_delta_coeff
512
-
513
- dX_div_X_limit = s% dX_div_X_limit* s% time_delta_coeff
514
- dX_div_X_hard_limit = s% dX_div_X_hard_limit* s% time_delta_coeff
515
507
516
508
do i= 1 , max_dx_limit_ctrls ! go over all potential species + XYZ
517
- if ( dX_limit_min_X(i) >= 1 .and. & ! as soon as all of these are >= 1
518
- dX_limit(i) >= 1 .and. & ! we'd have nothing to do
519
- dX_hard_limit(i) >= 1 .and. &
520
- dX_div_X_limit_min_X(i) >= 1 .and. &
521
- dX_div_X_limit(i) >= 1 .and. &
522
- dX_div_X_hard_limit(i) >= 1 ) then
509
+ if (s% dX_limit(i) >= 1 .and. & ! as soon as all of these are >= 1
510
+ s% dX_hard_limit(i) >= 1 .and. & ! we'd have nothing to do
511
+ s% dX_div_X_limit(i) >= 1 .and. &
512
+ s% dX_div_X_hard_limit(i) >= 1 ) then
523
513
cycle ! go to next
524
514
end if
525
-
515
+
516
+ dX_limit = s% dX_limit(i) * s% time_delta_coeff
517
+ dX_hard_limit = s% dX_hard_limit(i) * s% time_delta_coeff
518
+
519
+ if (s% log_max_temperature > s% dX_div_X_at_high_T_limit_lgT_min(i)) then
520
+ dX_div_X_limit = s% dX_div_X_at_high_T_limit(i)
521
+ dX_div_X_hard_limit = s% dX_div_X_at_high_T_hard_limit(i)
522
+ else
523
+ dX_div_X_limit = s% dX_div_X_limit(i)
524
+ dX_div_X_hard_limit = s% dX_div_X_hard_limit(i)
525
+ end if
526
+
527
+ dX_div_X_limit = dX_div_X_limit * s% time_delta_coeff
528
+ dX_div_X_hard_limit = dX_div_X_hard_limit * s% time_delta_coeff
529
+
526
530
max_dX = - 1 ; max_dX_j = - 1 ; max_dX_k = - 1
527
531
max_dX_div_X = - 1 ; max_dX_div_X_j = - 1 ; max_dX_div_X_k = - 1
528
532
bdy = 0
@@ -578,7 +582,7 @@ integer function check_dX(s, skip_hard_limit, dt, &
578
582
579
583
if ((.not. s% dX_decreases_only(j)) .and. delta_X < 0 ) delta_X = - delta_X
580
584
581
- if (X >= dX_limit_min_X(i)) then ! any check for dX_limit_* < 1 is useless since X <= 1 anyway
585
+ if (X >= s % dX_limit_min_X(i)) then ! any check for dX_limit_* < 1 is useless since X <= 1 anyway
582
586
if ((.not. skip_hard_limit) .and. delta_X > dX_hard_limit(i)) then
583
587
check_dX = retry
584
588
s% why_Tlim = Tlim_dX
@@ -601,7 +605,7 @@ integer function check_dX(s, skip_hard_limit, dt, &
601
605
max_dX_bdy_dist_dm = bdy_dist_dm
602
606
end if
603
607
end if
604
- if (X >= dX_div_X_limit_min_X(i)) then
608
+ if (X >= s % dX_div_X_limit_min_X(i)) then
605
609
delta_X_div_X = delta_X/ X
606
610
if ((.not. skip_hard_limit) .and. delta_X_div_X > dX_div_X_hard_limit(i)) then
607
611
check_dX = retry
@@ -656,8 +660,8 @@ integer function check_dX(s, skip_hard_limit, dt, &
656
660
else
657
661
s% Tlim_dX_div_X_species = max_dX_div_X_j
658
662
s% Tlim_dX_div_X_cell = max_dX_div_X_k
659
- write (* , ' (a30 , i5, 99e20.10)' ) &
660
- ' limit dt because of large dX_div_X ' // &
663
+ write (* , ' (a35 , i5, 99e20.10)' ) &
664
+ ' limit dt because of large dX_div_X ' // &
661
665
trim (chem_isos% name (s% chem_id(max_dX_div_X_j))) // &
662
666
' k, max, lim, m ' , &
663
667
max_dX_div_X_k, max_dX_div_X, dX_div_X_limit(i), &
0 commit comments