-
Notifications
You must be signed in to change notification settings - Fork 4
/
update_radius.F90
30 lines (24 loc) · 1.03 KB
/
update_radius.F90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
subroutine update_radius(mass, mdot, ag, beta, dlogbeta, dt, & ! Input
Ld, Lint, Li, stage, & ! Input
r ) ! In/Out
use protostellar_interface, only: calculate_R_main_sequence, &
Msun, Rsun, G
implicit none
double precision, intent(in) :: mass, mdot, ag, beta, dlogbeta, dt
double precision, intent(in) :: Ld, Lint, Li
integer, intent(in) :: stage
double precision, intent(inout) :: r
double precision :: dr,dm
double precision :: Rms
double precision, parameter :: fk=0.5
if ( stage .EQ. 5 ) then
call calculate_R_main_sequence(mass/Msun,Rms)
r = Rms * Rsun
else
dm = mdot*dt
dr = 2. * (dm/mass) * (1. - (1. - fk)/(ag*beta) + 0.5*dlogbeta) * r &
- 2. * (dt/(ag*beta)) * (r/(G*mass*mass))*(Lint + Li - Ld) * r
r = r + dr
endif
return
end subroutine update_radius