[Mesa-users] Simple one zone nuclear burning call using MESA
Philip Chang
chang65 at uwm.edu
Thu Mar 17 22:09:03 UTC 2022
Hi all,
After looking carefully at the code, I realized that there was a change
in r10398 compared to more modern versions of MESA and I must have
misunderstood Rob Farmer's remark. Indeed burn1_BE is disabled in
r15140 and instead burn1_zone is used there instead, which uses
net_1_zone_burn_const_density so indeed temperature is integrate at the
same time as the mass fractions. But this is not the case in older
versions of mesa like r10398.
Cheers,
Philip
On 3/17/22 12:44, Philip Chang via Mesa-users wrote:
> Hi Frank,
>
> I believe that mesa must do a fully-coupled hydro+burn timestep. The
> question is how and how is this done operationally in mesa-star. In
> particular star/solve_burn.f90 does a backward Euler (implicit)
> integration for a step dt. This backward Euler step only does this
> for the mass fraction and appears to hold both density (which is ok)
> and temperature fixed (which I don't think is ok).
>
> Now I am assuming that solve_burn.f90 is how mesa-star does nuclear
> burning. Please correct me if I am wrong.
>
> My question is how does the implicit time integration for the mass
> fractions done in star/solve_burn.f90 does the fully coupled hydro +
> burn timestep that you describe below and where in the code is this done.
>
> Thanks.
>
> Cheers,
>
> Philip
>
> On 3/17/22 11:58, Francis Timmes wrote:
>> hi philip,
>>
>>> ... how the internal energy is integrated in star when nuclear
>>> burning is included.
>> by default, mesa does a fully-coupled hydro + burn timestep.
>> see figure 47 and appendix b.2 of mesa II.
>> this is how the energy equation is self-consistently integrated.
>> mesa V discusses energy conservation.
>>
>> an option exists to do a more traditional operator split evolution;
>> hydro, then burn, hydro, then burn, etc. as you note, when the
>> loose-coupling assumed by operator splitting becomes a poor
>> approximation
>> can lead to questions about consistency. this is one reason mesa adopted
>> a fully-coupled approach from its inception.
>>
>> the burn modules can be used to build a standalone network.
>> this network could subsequently be used, for but one example,
>> in a explicit, 3d grmhd software instrument with an operator-split burn.
>>
>> fxt
>>
>>
>>
>>
>>> On Mar 17, 2022, at 6:45 AM, Philip Chang via Mesa-users
>>> <mesa-users at lists.mesastar.org> wrote:
>>>
>>> Hi everyone (once again),
>>>
>>> First, I want to thank everyone's suggestions. I have decide to
>>> stick with mesa for the nuclear burning library for my code mainly
>>> due to my familiarity with the codebase.
>>>
>>> However, due to Rob Farmer's previous remark on one_zone_burn, I
>>> have adopted nuclear burning from solve_burn.f90 in star/private to
>>> my code. However, after getting it working as a standalone, I
>>> realize that I am confused about one thing. In particular, the major
>>> issue that I have is that solve_burn.f90 does a simple implicit
>>> integration (backward Euler) for the mass fractions, but not the
>>> internal energy, i.e., temperature. This seems incorrect to me so I
>>> am hoping someone can explain to me how the internal energy is
>>> integrated in star when nuclear burning is included. This is
>>> especially confusing when the mass fractions change rapidly as it
>>> could in principle.
>>>
>>> FYI, I am using 10398. My apologies for using this old version, but
>>> more modern versions of mesa have changed the API somewhat which
>>> preclude me using a more recent version without changing my code
>>> significantly -- though this is anticipate sometime in the
>>> not-to-distant future.
>>>
>>> Cheers,
>>>
>>> Philip
>>>
>>> On 2/18/22 14:51, Rob Farmer wrote:
>>>> Hi,
>>>> This is prefaced that the one zone burn code is not well tested or
>>>> used. If something is not being used by star/ then there is likely
>>>> a) bugs b) lack of development c) things that no longer make sense.
>>>>
>>>>> 1. There are a load of pointers that are allocated on the module
>>>>> level
>>>> like xin, xin_copy, etc.
>>>>
>>>> Yes we need to allocate things at runtime as we don't know the
>>>> number of isotopes or number of reactions until runtime.
>>>>
>>>>> 2. net_1_zone_burn_const_density takes two external functions,
>>>> get_eos_info_for_burn_at_const_density and burn_finish_substep.
>>>>
>>>> Lack of development. Though that has been cleaned up in recent
>>>> versions of mesa.
>>>>
>>>>> 3. There is a lot of allocations and deallocation per call to nuclear
>>>> burning.
>>>>
>>>> The only way to know if it's significant to your runtime is to
>>>> profile the code.
>>>>
>>>>> 4. mod_one_zone_burn.f is a bit convoluted in how it runs. I am
>>>> wondering if there are any other recommendations for good
>>>> implementation
>>>> nuclear burning networks that can be integrated into a hydrodynamic
>>>> code.
>>>>
>>>> Have you looked at skynet
>>>> https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fui.adsabs.harvard.edu%2Fabs%2F2017ApJS..233...18L%2Fabstract&data=04%7C01%7Cchang65%40uwm.edu%7C73c0c6e278334329a6f708da083dcdde%7C0bca7ac3fcb64efd89eb6de97603cf21%7C0%7C0%7C637831358796578978%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=ADmC2MIIUcvxkBG0hFYlNz0e8FppmKpme2s6TtGZ6Ww%3D&reserved=0
>>>> ?
>>>>
>>>> Prompted by this and other recent questions on using the one zone
>>>> burn, I will be removing the one zone burner for the next mesa
>>>> release.
>>>>
>>>> Rob
>>>>
>>>>
>>>> On Fri, 18 Feb 2022 at 20:56, Philip Chang via Mesa-users
>>>> <mesa-users at lists.mesastar.org> wrote:
>>>> Hi All,
>>>>
>>>> Just wondering if anyone has any advice. I am working with a student
>>>> integrating nuclear burning in my moving-mesh code, MANGA. I've
>>>> previously integrated the mesa eos module into MANGA, e.g., compiling
>>>> the mesa libraries and writing glue code to called the mesa
>>>> libraries in
>>>> MANGA. I now want to integrate the nuclear burning module in MESA
>>>> into
>>>> MANGA.
>>>>
>>>> The version of mesa that I am using is release 10398. I cannot
>>>> upgrade
>>>> yet as MESA moves from including crlibm to including crlibm in mesasdk
>>>> release 12778, which causes issues with compilation and linking
>>>> with MANGA.
>>>>
>>>> The mesa nuclear burning module will be called as a one zone burn at
>>>> constant density per mesh point. As such I am using
>>>> net/test/src/mod_one_zone_burn.f as the example. However, as I
>>>> read it,
>>>> I do not quite understand all the choices that was made it's
>>>> development. Hopefully someone can answer some of the questions
>>>> that I
>>>> have.
>>>>
>>>> 1. There are a load of pointers that are allocated on the module level
>>>> like xin, xin_copy, etc. It is not clear why they are declared as
>>>> pointers rather than arrays outright. My guess is that size of the
>>>> array is not necessarily known at compile time because you can use
>>>> different networks. Is this correct?
>>>>
>>>> 2. net_1_zone_burn_const_density takes two external functions,
>>>> get_eos_info_for_burn_at_const_density and burn_finish_substep.
>>>> get_eos_for_burn_at_const_density explicitly uses the HELMHOLTZ eos,
>>>> while burner_finish_substep using the mesa eos module. Is there a
>>>> reason for the difference?
>>>>
>>>> 3. There is a lot of allocations and deallocation per call to nuclear
>>>> burning. For instance, there is one allocation and deallocation per
>>>> call
>>>> to burner_finish_substep. This seems excessive to me. Usually
>>>> allocation on the stack is much faster than allocation on the heap
>>>> because of the (usually) expensive malloc call. I'm slightly
>>>> concerned
>>>> about the number of allocs in my MANGA code, as the usual usage for
>>>> MANGA is running on a large node with 16-32+ threads per
>>>> processes. As
>>>> each thread will call the nuclear burning step simultaneously, I am
>>>> concerned that the number of allocs will really slow the nuclear
>>>> burning
>>>> calls. Is this necessarily a major concern?
>>>>
>>>> 4. mod_one_zone_burn.f is a bit convoluted in how it runs. I am
>>>> wondering if there are any other recommendations for good
>>>> implementation
>>>> nuclear burning networks that can be integrated into a hydrodynamic
>>>> code. I have looked at Frank Timmes cococubed site which has aprox13.
>>>> This is significantly simpler than mesa, but I know that it is not
>>>> thread-safe, which is a necessity.
>>>>
>>>> Thanks.
>>>>
>>>> Cheers,
>>>>
>>>> Phil Chang
>>>>
>>>> _______________________________________________
>>>> mesa-users at lists.mesastar.org
>>>> https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mesastar.org%2Fmailman%2Flistinfo%2Fmesa-users&data=04%7C01%7Cchang65%40uwm.edu%7C73c0c6e278334329a6f708da083dcdde%7C0bca7ac3fcb64efd89eb6de97603cf21%7C0%7C0%7C637831358796578978%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=yGW1erh1Fbt8lhB%2BlOo8ug8eHkkLZJkdH9NbZluLFoo%3D&reserved=0
>>>>
>>>>
>>> _______________________________________________
>>> mesa-users at lists.mesastar.org
>>> https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mesastar.org%2Fmailman%2Flistinfo%2Fmesa-users&data=04%7C01%7Cchang65%40uwm.edu%7C73c0c6e278334329a6f708da083dcdde%7C0bca7ac3fcb64efd89eb6de97603cf21%7C0%7C0%7C637831358796578978%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=yGW1erh1Fbt8lhB%2BlOo8ug8eHkkLZJkdH9NbZluLFoo%3D&reserved=0
>>>
>>>
> _______________________________________________
> mesa-users at lists.mesastar.org
> https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mesastar.org%2Fmailman%2Flistinfo%2Fmesa-users&data=04%7C01%7Cchang65%40uwm.edu%7C73c0c6e278334329a6f708da083dcdde%7C0bca7ac3fcb64efd89eb6de97603cf21%7C0%7C0%7C637831358796578978%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=yGW1erh1Fbt8lhB%2BlOo8ug8eHkkLZJkdH9NbZluLFoo%3D&reserved=0
>
>
More information about the Mesa-users
mailing list