[mesa-users] extra heat source in mesa star
Bill Paxton
paxton at kitp.ucsb.edu
Thu Dec 9 13:32:24 EST 2010
damn -- there's bug in that little code fragment I just sent. You'll need to set extra_heat(k) to 0 as in the fix below.
Just proving once again that nothing is too simple to have a bug! Maybe there are still more in there. Let me know.
-B
On Dec 9, 2010, at 10:26 AM, Bill Paxton wrote:
> Hi Yevgeni,
>
> As you know, there are a couple of simple schemes for adding energy, either uniformly by setting the 'extra_power_source' control or near surface to model irradiation by setting 'flux_for_hemisphere_irradiation'. But your case goes beyond those.
>
> The general scheme for adding extra heat involves writing a few lines of code. Look at star/public/other_energy.f. The routine 'do_other_energy' is called from inside star to set the vector 's% extra_heat'. The value of s% extra_heat(k) is in ergs/g/sec; it will be added to the energy generation term for cell k along with nuclear reactions. You'll want to change that to set extra_heat(k) according the your rule. You can access information such as the radius for the outer edge of cell k as s% r(k). Here is a little example that turns on extra heat depending on radius.
>
> subroutine do_other_energy(s, ierr)
> ! set s% extra_heat(k) to ergs/g/sec average for cell k
> use const_def, only: Rsun
> type (star_info), pointer :: s
> integer, intent(out) :: ierr
> integer :: k
> ierr = 0
> ! here is an example of calculating extra_heat for each cell.
> do k = 1, s% nz
> if (s% r(k) > 0.7*Rsun .and. s% r(k) < 0.9*Rsun) then
> s% extra_heat(k) = 1d3*exp(-10*(s% r(k) - 0.8*Rsun)**2) ! 10^3 erg/g/s at peak
else
s% extra_heat(k) = 0
> end if
> end do
> s% d_extra_heat_dlnd(:) = 0 ! obsolete and will go away in future release
> s% d_extra_heat_dlnT(:) = 0 ! obsolete and will go away in future release
> end subroutine do_other_energy
>
>
> After you edit other_energy.f, change to the mesa/star/test directory and do
> ./mk
> ./ck
> ./export
>
> The ./ck should not produce any output (that means it is okay).
> The ./export makes your changes available to your work directories.
>
> In the not-too-distant future I'll be changing the way this works to make it a bit easier (by using the Fortran2003 feature of having pointers to procedures as elements of derived types). But until then, you'll need to go through the sequence of edit, make & export from star/test, and then remake and run in your work directory.
>
> Let me know how it goes!
>
> Cheers,
> Bill
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> mesa-users mailing list
> mesa-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mesa-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mesastar.org/pipermail/mesa-users/attachments/20101209/55867f3f/attachment.html>
More information about the Mesa-users
mailing list