Skip to content

Commit 6f603b7

Browse files
author
Matthias Fabry
committed
some clean up and use recent fp/ft fits
1 parent 02a9cf2 commit 6f603b7

File tree

2 files changed

+202
-158
lines changed

2 files changed

+202
-158
lines changed

star/private/hydro_eqns.f90

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -602,10 +602,9 @@ subroutine do1_w_div_wc_eqn(s, k, nvar, ierr)
602602
integer, intent(in) :: k, nvar
603603
integer, intent(out) :: ierr
604604
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
607606
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, &
609608
jrot_ratio, sigmoid_jrot_ratio
610609
logical :: test_partials
611610
include 'formats'
@@ -619,34 +618,42 @@ subroutine do1_w_div_wc_eqn(s, k, nvar, ierr)
619618
i_w_div_wc = s% i_w_div_wc
620619

621620
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)
625625

626626
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)
630631

631632
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
634639

635640
r00 = wrap_r_00(s, k)
636641
if (s% j_rot_flag) then
637642
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)
639644
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)
641646
end if
642647
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
644651
if (jrot_ratio% val < 0d0) then
645652
sigmoid_jrot_ratio = -sigmoid_jrot_ratio
646653
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)
648655
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)
650657
end if
651658

652659
s% equ(i_equ_w_div_wc, k) = resid_ad% val

0 commit comments

Comments
 (0)