[Mesa-users] unintended consequences of not properly neutralizing namelist commands.

amber lauer amberlauer at gmail.com
Mon Apr 12 22:47:22 UTC 2021


Hey Warrick, now I'm doubting myself and will run again to check. I'll
report back.

=================================
Dr. Amber Lauer-coles
Postdoctoral Researcher
Triangle Universities Nuclear Lab
Duke University
amber.lauer at tunl.duke.edu <amber.lauer at duke.edu>


On Mon, Apr 12, 2021 at 4:47 AM Warrick Ball <W.H.Ball at bham.ac.uk> wrote:

> Hi Amber,
>
> > This is definitely a user issue and not code issue.
>
> I'm not sure about that!  I'm surprised that your example "bad" inlist
> options led to unintended consequences, so I had a look at the block of
> code that sets the special rate factors.  This is most of the subroutine
> `set_rate_factors` in `star/job/run_star_support.f90`:
>
>           s% rate_factors(:) = 1
>           if (s% job% num_special_rate_factors <= 0) return
>
>           call get_net_reaction_table_ptr(s% net_handle, net_reaction_ptr,
> ierr)
>           if (ierr /= 0) return
>
>           do i=1,s% job% num_special_rate_factors
>              if (len_trim(s% job% reaction_for_special_factor(i)) == 0)
> cycle
>              ir = rates_reaction_id(s% job% reaction_for_special_factor(i))
>              j = 0
>              if (ir > 0) j = net_reaction_ptr(ir)
>              if (j <= 0) cycle
>              s% rate_factors(j) = s% job% special_rate_factor(i)
>              write(*,2) 'set special rate factor for ' // &
>                    trim(s% job% reaction_for_special_factor(i)), &
>                    j, s% job% special_rate_factor(i)
>           end do
>
> In your first "bad" example (reaction name ' '), I would expect the
> `len_trim` line to return zero, so the loop will cycle, hit the iterator's
> upper limit and exit, leaving the rate factors untouched.
>
> In your second "bad" example (reaction name 'placeholder'), I would expect
> the dict lookup function `rates_reaction_id` to fail, which should return
> zero.  Then `ir` is zero, so `j` isn't modified and, again, the loop will
> exit without modifying the rate factors.
>
> So your examples, as far as I can tell, should work.  That they don't may
> well indicate a bug, perhaps somewhere else in the code.
>
> Could you send an inlist that reproduces the unintended consequences for
> your examples above?  I had a quick go at creating something myself but
> haven't got any "unintended" consequences.  Also, from the `write(*,2)`
> line in the snippet above (and my own brief experiments), the terminal
> output should have lines like
>
>                   set special rate factor for rn14pg_aux          19
> 1.5000000000000000D+00
>                   set special rate factor for rn14pg_aux          19
> 1.5000000000000000D+00
>
> near the start.  That's the output when I ran with
>
>      num_special_rate_factors = 1
>      reaction_for_special_factor(1) = 'rn14pg_aux'
>      special_rate_factor(1) = 1.5
>
> What do you get with the "bad" examples?  So far, if I use the names ' '
> or 'placeholder', I don't see those lines, presumably because the routine
> is exiting the way I expect it to, as described above, and therefore not
> modifying the rates.
>
> Cheers,
> Warrick
>
>
>
> ___________
>
> Warrick Ball
> Postdoc, School of Physics and Astronomy
> University of Birmingham, Edgbaston, Birmingham B15 2TT
> W.H.Ball at bham.ac.uk
> +44 (0)121 414 4552
>
> On Mon, 12 Apr 2021, mesa-users at lists.mesastar.org wrote:
>
> > I want to report that things can go wrong if you don't properly nullify
> commands. Take for example a set of commands used to change reaction rates
> by a factor. One might use the following
> >
> > >num_special_rate_factors = 1
> > >reaction_for_special_factor(1)='reaction1'
> > >special_rate_factor(1) = 2
> >
> > The proper way to cancel these commands is to either
> > 1) comment them out with !
> > 2) set num_special_rate_factors=0 (and possibly, leave reaction_name
> blank)
> > or 3) set special_rate_factor(:)=1.
> >
> > The following are not the proper ways, and will lead to unintended
> consequences
> >
> > num_special_rate_factors = 1
> > reaction_for_special_factor(1)=' '
> > special_rate_factor(1) = 10
> >
> > or
> >
> > num_special_rate_factors = 1
> > reaction_for_special_factor(1)='placeholder'
> > special_rate_factor(1) = 10
> >
> > Please learn from my experience and save yourself some time and
> confusion. This is definitely a user issue and not code issue.
> >
> > =================================
> > Dr. Amber Lauer-coles
> > Postdoctoral Researcher
> > Triangle Universities Nuclear Lab
> > Duke University
> > amber.lauer at tunl.duke.edu
> >
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mesastar.org/pipermail/mesa-users/attachments/20210412/4f8f5969/attachment.htm>


More information about the Mesa-users mailing list