@@ -602,10 +602,9 @@ subroutine do1_w_div_wc_eqn(s, k, nvar, ierr)
602
602
integer , intent (in ) :: k, nvar
603
603
integer , intent (out ) :: ierr
604
604
integer :: i_equ_w_div_wc, i_w_div_wc
605
- real (dp) :: wwc, dimless_rphi, dimless_rphi_given_wwc, w1, w2
606
- real (dp) :: jr_lim1, jr_lim2, A, C
605
+ real (dp) :: wwc, wwc4, wwc6, wwc_log_term, dimless_rphi, dimless_rphi_given_wwc, w1, w2, jr_lim1, jr_lim2
607
606
type (auto_diff_real_star_order1) :: &
608
- w_d_wc00, r00, jrot00, resid_ad, A_ad, C_ad, &
607
+ w_d_wc00, w4_d_wc00, w6_d_wc00, r00, w_log_term_d_wc00 , jrot00, resid_ad, A_ad, C_ad, &
609
608
jrot_ratio, sigmoid_jrot_ratio
610
609
logical :: test_partials
611
610
include ' formats'
@@ -619,34 +618,42 @@ subroutine do1_w_div_wc_eqn(s, k, nvar, ierr)
619
618
i_w_div_wc = s% i_w_div_wc
620
619
621
620
wwc = s% w_div_wcrit_max
622
- A = 1d0-0.1076d0 * pow4(wwc)- 0.2336d0 * pow6(wwc)- 0.5583d0 * log (1d0 - pow4(wwc))
623
- C = 1d0+17d0 / 60d0 * pow2(wwc)- 0.3436d0 * pow4(wwc)- 0.4055d0 * pow6(wwc)- 0.9277d0 * log (1d0 - pow4(wwc))
624
- jr_lim1 = two_thirds* wwc* C/ A
621
+ wwc4 = pow4(wwc)
622
+ wwc6 = pow6(wwc)
623
+ wwc_log_term = log (1d0 - pow(wwc, log_term_power))
624
+ jr_lim1 = two_thirds * wwc * C(pow2(wwc), wwc4, wwc6, wwc_log_term) / A(wwc4, wwc6, wwc_log_term)
625
625
626
626
wwc = s% w_div_wcrit_max2
627
- A = 1d0-0.1076d0 * pow4(wwc)- 0.2336d0 * pow6(wwc)- 0.5583d0 * log (1d0 - pow4(wwc))
628
- C = 1d0+17d0 / 60d0 * pow2(wwc)- 0.3436d0 * pow4(wwc)- 0.4055d0 * pow6(wwc)- 0.9277d0 * log (1d0 - pow4(wwc))
629
- jr_lim2 = two_thirds* wwc* C/ A
627
+ wwc4 = pow4(wwc)
628
+ wwc6 = pow6(wwc)
629
+ wwc_log_term = log (1d0 - pow(wwc, log_term_power))
630
+ jr_lim2 = two_thirds * wwc * C(pow2(wwc), wwc4, wwc6, wwc_log_term) / A(wwc4, wwc6, wwc_log_term)
630
631
631
632
w_d_wc00 = wrap_w_div_wc_00(s, k)
632
- A_ad = 1d0-0.1076d0 * pow4(w_d_wc00)- 0.2336d0 * pow6(w_d_wc00)- 0.5583d0 * log (1d0 - pow4(w_d_wc00))
633
- C_ad = 1d0+17d0 / 60d0 * pow2(w_d_wc00)- 0.3436d0 * pow4(w_d_wc00)- 0.4055d0 * pow6(w_d_wc00)- 0.9277d0 * log (1d0 - pow4(w_d_wc00))
633
+ w4_d_wc00 = pow4(w_d_wc00)
634
+ w6_d_wc00 = pow6(w_d_wc00)
635
+ w_log_term_d_wc00 = log (1d0 - pow(w_d_wc00, log_term_power))
636
+ A_ad = 1d0 + 0.3293d0 * w4_d_wc00 - 0.4926d0 * w6_d_wc00 - 0.5560d0 * w_log_term_d_wc00
637
+ C_ad = 1d0 + 17d0 / 60d0 * pow2(w_d_wc00) + 0.4010d0 * w4_d_wc00 - 0.8606d0 * w6_d_wc00 &
638
+ - 0.9305d0 * w_log_term_d_wc00
634
639
635
640
r00 = wrap_r_00(s, k)
636
641
if (s% j_rot_flag) then
637
642
jrot00 = wrap_jrot_00(s, k)
638
- jrot_ratio = jrot00/ sqrt (s% cgrav(k)* s% m(k)* r00)
643
+ jrot_ratio = jrot00 / sqrt (s% cgrav(k) * s% m(k) * r00)
639
644
else
640
- jrot_ratio = s% j_rot(k)/ sqrt (s% cgrav(k)* s% m(k)* r00)
645
+ jrot_ratio = s% j_rot(k) / sqrt (s% cgrav(k) * s% m(k) * r00)
641
646
end if
642
647
if (abs (jrot_ratio% val) > jr_lim1) then
643
- sigmoid_jrot_ratio = 2 * (jr_lim2- jr_lim1)/ (1 + exp (- 2 * (abs (jrot_ratio)- jr_lim1)/ (jr_lim2- jr_lim1)))- jr_lim2+2 * jr_lim1
648
+ sigmoid_jrot_ratio = 2d0 * (jr_lim2- jr_lim1) &
649
+ / (1d0 + exp (- 2d0 * (abs (jrot_ratio) - jr_lim1) / (jr_lim2 - jr_lim1))) &
650
+ - jr_lim2 + 2 * jr_lim1
644
651
if (jrot_ratio% val < 0d0 ) then
645
652
sigmoid_jrot_ratio = - sigmoid_jrot_ratio
646
653
end if
647
- resid_ad = (sigmoid_jrot_ratio - two_thirds* w_d_wc00* C_ad/ A_ad)
654
+ resid_ad = (sigmoid_jrot_ratio - two_thirds * w_d_wc00 * C_ad / A_ad)
648
655
else
649
- resid_ad = (jrot_ratio - two_thirds* w_d_wc00* C_ad/ A_ad)
656
+ resid_ad = (jrot_ratio - two_thirds * w_d_wc00 * C_ad / A_ad)
650
657
end if
651
658
652
659
s% equ(i_equ_w_div_wc, k) = resid_ad% val
0 commit comments