[mesa-users] bad angular_momentum_j

Kenny Van kvan at ualberta.ca
Mon Aug 8 19:06:02 EDT 2016


Hi Pablo,

I'll verify the problem I'm running into and get back to you.

As for the snippet I added before, that was just an attempt to see if I
could get MESA to decrease the timestep in the very first iteration. I
include a similar code in extra_binary_check_model and just use a small
initial timestep now.

On 8 August 2016 at 17:02, Pablo Marchant <pamarca at gmail.com> wrote:

> Kenny, if you want to debug this just do some small edits to
> binary/private/binary_evolve.f90, in particular around these lines
>
> 257          ! get jdot and update orbital J
> 258          b% jdot = get_jdot(b, b% mtransfer_rate, b% xfer_fraction)
> 259          b% angular_momentum_j = b% angular_momentum_j + b% jdot*b%
> s_donor% time_step*secyer
> 260
> 261          if (b% angular_momentum_j <= 0) then
> 262             stop 'bad angular_momentum_j'
> 263          end if
>
> Since the stop condition literally has a check for negative angular
> momentum, I have a hard time believing what you say. You can put write
> statements in there to verify you are getting the numbers you expect. If
> this still gives you no answers, then if you want you can send a minimal
> example that fails (truly minimal please), and I can give it a look.
>
> PS:
>
> Just saw in more detail this snippet you posted before
>
>          write(*,*) "starting modified MB"
>          if (b% angular_momentum_j <= 0) then
>             write(*,*), "angular_momentum_j <= 0", b% angular_momentum_j
>             b% s1% dt_next = min(b% s1% dt * 0.50, b% s1% dt_next)
>             extras_binary_startup = retry
>          end if
>
> You said you add this to extras_binary_startup. That will do nothing,
> extras_binary_startup is only ran at the beginning of the simulation, and
> orbital angular momentum will be positive. You should be doing this in
> extras_binary_check_model.
>
> On Mon, Aug 8, 2016 at 9:12 PM, Kenny Van <kvan at ualberta.ca> wrote:
>
>> Hi,
>>
>> So unfortunately after some testing I've started running into some
>> problems that I cant quite solve. I've included a scaling factor in the
>> timestep check to try and retry the run if we encounter a problem with
>> angular momentum.
>> The problem that I'm running into now is that the code triggers the "bad
>> angular_momentum_j" portion even when the angular_momentum_j > 0. At every
>> step I have the extras_binary_check_model output the
>>
>> b% angular_momentum_j,
>>
>> as well as
>>
>> b% angular_momentum_j + b% jdot * b% s1% dt_next
>>
>> so I have an idea of what the current angular momentum is as well as
>> approx what it will be in the next timestep.
>>
>> At the point of the code breaking both of these values are positive and I
>> encounter the termination code
>>
>> STOP bad angular_momentum_j.
>>
>> I'm not quite sure what I can do from here.
>>
>> On 4 August 2016 at 21:40, Pablo Marchant <pamarca at gmail.com> wrote:
>>
>>> You should be able to do that in extras_binary_startup. Anyhow, I'd just
>>> go for the simple approach of setting a small initial timestep, if its too
>>> small it will grow quite fast.
>>>
>>> On Fri, Aug 5, 2016 at 3:36 AM, Kenny Van <kvan at ualberta.ca> wrote:
>>>
>>>> Yes, but I was also hoping to create an adaptive way for MESA to adjust
>>>> the first step if necessary
>>>>
>>>> On 4 August 2016 at 17:00, Pablo Marchant <pamarca at gmail.com> wrote:
>>>>
>>>>> Are you running into these issues at the first timestep? If so, you
>>>>> need to ensure the first step is small as well.
>>>>>
>>>>> On Thu, Aug 4, 2016 at 11:02 PM, Kenny Van <kvan at ualberta.ca> wrote:
>>>>>
>>>>>> Hi Everyone,
>>>>>>
>>>>>> So I've checked the units for Jdot and they seem fine, Jorb/Jdot is
>>>>>> on the order of 1e12. The issue I'm currently running into is that the code
>>>>>> doesn't quite seem to be doing what I think it should be doing.
>>>>>> For extra checks I also included:
>>>>>>
>>>>>>          write(*,*) "starting modified MB"
>>>>>>          if (b% angular_momentum_j <= 0) then
>>>>>>             write(*,*), "angular_momentum_j <= 0", b%
>>>>>> angular_momentum_j
>>>>>>             b% s1% dt_next = min(b% s1% dt * 0.50, b% s1% dt_next)
>>>>>>             extras_binary_startup = retry
>>>>>>          end if
>>>>>>
>>>>>> to extra_binary_startup. Just to check if my initial timestep is
>>>>>> sufficiently small and the MESA code doesn't seem to be triggering this. I
>>>>>> have a similar portion of code in extras_binary_check_model,
>>>>>> but I haven't reached a point where the simulation breaks to
>>>>>> determine if this works or not. Does the file binary_evolve.f90 trigger and
>>>>>> instantly kill the MESA simulation before the code checks the
>>>>>> run_binary_extras.f file?
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 3 August 2016 at 21:25, Kenny Van <kvan at ualberta.ca> wrote:
>>>>>>
>>>>>>> Hey Pablo,
>>>>>>>
>>>>>>> Thanks for the advice, I'll try out the time step adjustment to see
>>>>>>> how it goes. I'll also double check the units to be 100% sure that I
>>>>>>> haven't crated any jdots that are a few orders too big.
>>>>>>>
>>>>>>>
>>>>>>> On 3 August 2016 at 20:53, Pablo Marchant <pamarca at gmail.com> wrote:
>>>>>>>
>>>>>>>> Also, be sure you are getting your units right. That's an easy way
>>>>>>>> to create absurdly large jdots (been there). For the process you are
>>>>>>>> considering, what's the decay timescale for Jorb (ie. Jorb/Jdot)? If that
>>>>>>>> is absurdly tiny then I'd worry.
>>>>>>>>
>>>>>>>> On Thu, Aug 4, 2016 at 4:50 AM, Pablo Marchant <pamarca at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Kenny, I'd recommend you to manually adjust the timestep, this is
>>>>>>>>> something we discussed here in mesa-users a while ago, copy from Rob
>>>>>>>>> Farmer's answer to create a hard timestep limit
>>>>>>>>>
>>>>>>>>> (Untested)
>>>>>>>>>
>>>>>>>>> In extras_startup:
>>>>>>>>> s%xtra1=0.d0
>>>>>>>>>
>>>>>>>>> extras_finish_step:
>>>>>>>>> s%xtra1=s%log_R
>>>>>>>>>
>>>>>>>>> extras_check_model:
>>>>>>>>>
>>>>>>>>> if( abs( 10**s%xtra1_old - 10**s%log_R) > EPS) then
>>>>>>>>>     extras_check_model = retry
>>>>>>>>>     s% dt = s%dt * SOME_SCALE_FACTOR
>>>>>>>>> end if
>>>>>>>>>
>>>>>>>>> And to create a soft timestep limit:
>>>>>>>>>
>>>>>>>>> (also untested)
>>>>>>>>>
>>>>>>>>> if( abs( 10**s%xtra1_old - 10**s%log_R) > EPS) then
>>>>>>>>>     s% dt_next = min(s% dt_next, s%dt * SOME_SCALE_FACTOR)
>>>>>>>>> end if
>>>>>>>>>
>>>>>>>>> If the first timestep is the issue, then set a smaller initial
>>>>>>>>> timestep. Check this from defaults/star_job.defaults
>>>>>>>>>
>>>>>>>>>  435          !### set_initial_dt
>>>>>>>>>  436          !### years_for_initial_dt
>>>>>>>>>  437          !### seconds_for_initial_dt
>>>>>>>>>  438          ! if true, set initial timestep, dt, in years
>>>>>>>>>  439
>>>>>>>>>  440       set_initial_dt = .false.
>>>>>>>>>  441       years_for_initial_dt = 0
>>>>>>>>>  442       seconds_for_initial_dt = 0
>>>>>>>>>
>>>>>>>>> On Wed, Aug 3, 2016 at 4:56 PM, Kenny Van <kvan at ualberta.ca>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I'm currently working on adapting additional magnetic braking
>>>>>>>>>> terms into MESA using the run_binary_extras.f file. I'm currently running
>>>>>>>>>> into an issue where the amount of angular momentum being removed is too
>>>>>>>>>> great in a single timestep and causing the simulation to break. Looking at
>>>>>>>>>> the code it seems like the MESA binary evolution dies immediately if the
>>>>>>>>>> angular momentum loss is too great instead of retrying with a smaller
>>>>>>>>>> timestep. Is there a way to get MESA to retry with a smaller timestep when
>>>>>>>>>> it encounters this issue?
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>> ------------------
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> mesa-users mailing list
>>>>>>>>>> mesa-users at lists.sourceforge.net
>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/mesa-users
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Pablo Marchant Campos
>>>>>>>>> M.Sc on Astrophysics, Universidad Católica de Chile
>>>>>>>>> PhD student, Argelander-Institut für Astronomie
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Pablo Marchant Campos
>>>>>>>> M.Sc on Astrophysics, Universidad Católica de Chile
>>>>>>>> PhD student, Argelander-Institut für Astronomie
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Pablo Marchant Campos
>>>>> M.Sc on Astrophysics, Universidad Católica de Chile
>>>>> PhD student, Argelander-Institut für Astronomie
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Pablo Marchant Campos
>>> M.Sc on Astrophysics, Universidad Católica de Chile
>>> PhD student, Argelander-Institut für Astronomie
>>>
>>
>>
>
>
> --
> Pablo Marchant Campos
> M.Sc on Astrophysics, Universidad Católica de Chile
> PhD student, Argelander-Institut für Astronomie
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mesastar.org/pipermail/mesa-users/attachments/20160808/8dcd3ed5/attachment.html>


More information about the Mesa-users mailing list