Mesa学习笔记#1:Running MESA

2023-11-02

Mesa学习笔记#1:Running MESA

Running MESA

关于如何使用MESA来演化一颗恒星。***$MESA_DIR***目录有许多子目录。这些子目录中的大多数都是模块(MESA中的“M”),它们提供一些特定的功能(例如,“kap”提供计算不透明度的例程)。最重要的模块是“star”,它包含一个模块,该模块知道如何将所有其他模块的功能放在一起,通过一个步骤推进一个star模型的状态,然后为下一步建立一个新的时间增量。基本上,这就是它的全部功能。

这里是为了一个可以用这些模块进行多步恒星演化的程序。这样的程序位于star/work目录中,我们将从那里开始。

1. Make a copy of the star/work directory

在主MESA目录之外的其他地方执行和存储工作。这将在将来的某个时候对新的MESA版本进行更新时简化工作。因此,每当启动一个新的MESA项目时,应该创建一个新的star/work目录副本。

cp -r $MESA_DIR/star/work tutorial

复制了工作副本,接下来开始编译其中的代码。

cd tutorial
./mk

2. Set up configuration files

工作目录已经包含了一组简单的配置文件,将从一个15太阳质量的恒星演化到零龄主序(核心氢点火)。现在,不需要编辑任何内容,查看一下这些文件。

2.1. inlist

这是MESA启动时读取的第一个内列表文件。文件inlist通常用于指示MESA读取一个或多个其他内链表文件。

恒星文件inlist包含五个部分 (technically fortran “namelists”) :

star_job - options for the program that evolves the star 
eos -    options for the MESA eos module 
kap - options for the MESA kap module    
controls - options for the MESA star module 
pgstar - options for    on-screen plotting

名称列表中定义都是这样的形式:

name = value ! comment

使用正常的fortran语法指定值。空行和注释行可以自由地包含在列表中。在包含名称-值对的行开始使用空格也是可以的,因此可以(也应该)缩进内容以使其更具可读性。
所有的控件在初始化时都有合理的默认值,因此只需要设置实际想要更改的那些。

! This is the first inlist file that MESA reads when it starts.

! This file tells MESA to go look elsewhere for its configuration
! info. This makes changing between different inlists easier, by
! allowing you to easily change the name of the file that gets read.

&star_job

    read_extra_star_job_inlist1 = .true.
    extra_star_job_inlist1_name = 'inlist_project'

/ ! end of star_job namelist


&eos

    read_extra_eos_inlist1 = .true.
    extra_eos_inlist1_name = 'inlist_project'

/ ! end of eos namelist


&kap

    read_extra_kap_inlist1 = .true.
    extra_kap_inlist1_name = 'inlist_project'

/ ! end of kap namelist


&controls

    read_extra_controls_inlist1 = .true.
    extra_controls_inlist1_name = 'inlist_project'

/ ! end of controls namelist


&pgstar

    read_extra_pgstar_inlist1 = .true.
    extra_pgstar_inlist1_name = 'inlist_pgstar'

/ ! end of pgstar namelist
2.2. inlist_project

我们将使用这些选项从一个前主序模型构建一个15倍太阳质量的恒星,然后在到达零龄主序(ZAMS)时停止演化。

! inlist to evolve a 15 solar mass star

! For the sake of future readers of this file (yourself included),
! ONLY include the controls you are actually using.  DO NOT include
! all of the other controls that simply have their default values.

&star_job
  ! see star/defaults/star_job.defaults

  ! begin with a pre-main sequence model
    create_pre_main_sequence_model = .true.

  ! save a model at the end of the run
    save_model_when_terminate = .false.
    save_model_filename = '15M_at_TAMS.mod'

  ! display on-screen plots
    pgstar_flag = .true.

/ ! end of star_job namelist


&eos
  ! eos options
  ! see eos/defaults/eos.defaults

/ ! end of eos namelist


&kap
  ! kap options
  ! see kap/defaults/kap.defaults
  use_Type2_opacities = .true.
  Zbase = 0.02

/ ! end of kap namelist


&controls
  ! see star/defaults/controls.defaults

  ! starting specifications
    initial_mass = 15 ! in Msun units
    initial_z = 0.02

  ! when to stop

    ! stop when the star nears ZAMS (Lnuc/L > 0.99)
    Lnuc_div_L_zams_limit = 0.99d0
    stop_near_zams = .true.

    ! stop when the center mass fraction of h1 drops below this limit
    xa_central_lower_limit_species(1) = 'h1'
    xa_central_lower_limit(1) = 1d-3

  ! wind

  ! atmosphere

  ! rotation

  ! element diffusion

  ! mlt

  ! mixing

  ! timesteps

  ! mesh

  ! solver
     ! options for energy conservation (see MESA V, Section 3)
     energy_eqn_option = 'dedt'
     use_gold_tolerances = .true.

  ! output

/ ! end of controls namelist
2.2. inlist_pgstar

这包含了屏幕上绘图的选项。

&pgstar
  ! see star/defaults/pgstar.defaults

  ! MESA uses PGPLOT for live plotting and gives the user a tremendous
  ! amount of control of the presentation of the information.

  ! show HR diagram
  ! this plots the history of L,Teff over many timesteps
    HR_win_flag = .true.

  ! set static plot bounds
    HR_logT_min = 3.5
    HR_logT_max = 4.6
    HR_logL_min = 2.0
    HR_logL_max = 6.0

  ! set window size (aspect_ratio = height/width)
    HR_win_width = 6
    HR_win_aspect_ratio = 1.0


  ! show temperature/density profile
  ! this plots the internal structure at single timestep
    TRho_Profile_win_flag = .true.

  ! add legend explaining colors
    show_TRho_Profile_legend = .true.

  ! display numerical info about the star
    show_TRho_Profile_text_info = .true.

  ! set window size (aspect_ratio = height/width)
    TRho_Profile_win_width = 8
    TRho_Profile_win_aspect_ratio = 0.75

/ ! end of pgstar namelist

3. Run MESA

现在运行代码就像输入一样简单:

./rn

MESA将通过终端输出保持更新:

     step    lg_Tmax     Teff     lg_LH      lg_Lnuc     Mass       H_rich     H_cntr     N_cntr     Y_surf   eta_cntr   zones  retry
   lg_dt_yr    lg_Tcntr    lg_R     lg_L3a     lg_Lneu     lg_Mdot    He_core    He_cntr    O_cntr     Z_surf   gam_cntr   iters
     age_yr    lg_Dcntr    lg_L     lg_LZ      lg_Lphoto   lg_Dsurf   C_core     C_cntr     Ne_cntr    Z_cntr   v_div_cs       dt_limit
__________________________________________________________________________________________________________________________________________________

        800   7.455602  2.821E+04   4.211546   4.211546  15.000000  15.000000   0.699864   0.001978   0.280000  -5.912231    873      0
   2.364495   7.455602   0.837935 -33.599828   3.029214 -99.000000   0.000000   0.279998   0.009380   0.020000   0.014924      3
 4.5570E+04   0.596891   4.432022 -11.138110 -99.000000  -9.090996   0.000000   0.002618   0.002085   0.020138  0.000E+00    varcontrol

MESA还将显示一些pgstar图,如下所示:
在这里插入图片描述
在这里插入图片描述
这应该运行大约850步,然后停止,并显示以下消息:

stop because Lnuc_div_L >= Lnuc_div_L_zams_limit

4. Resuming MESA

在整个运行过程中,并不局限于使用相同的参数设置。可以停止运行,编辑inlist文件,并使用新的设置重新启动。这种停止-重新启动机制经过精心构造,因此如果从中间状态重新启动而不更改任何控件,将得到完全相同的结果。要做到这一点,保存的信息必须是完整的,这意味着有很多信息。为了使其快速运行,重新启动信息被转储为二进制格式。这些二进制转储称为“照片”,并保存在具有相同名称的子目录中。
需要强调的是,照片不适合模特长期储存。特别是,当更新到新版本的MESA star时,应该预料到现有的照片文件将会过时。
如果在运行的终端输出中向后滚动,应该会发现如下一行(尽管MESA版本之间的数字可能略有不同):

save photos/x849 for model 849

指示在运行终止时自动保存其中一个快照。
在编辑器中打开inlist_project。可以看到有两个停止条件:

! stop when the star nears ZAMS (Lnuc/L > 0.99)
Lnuc_div_L_zams_limit = 0.99d0
stop_near_zams = .true.

! stop when the center abundance by mass of h1 drops below this limit
xa_central_lower_limit_species(1) = 'h1'
xa_central_lower_limit(1) = 1d-3

正如MESA在终止消息中指出的那样,我们停止是因为第一个条件(ZAMS自然是在h耗尽之前)。通过编辑inlist来关闭这个停止条件:

stop_near_zams = .false.

并保存inlist文件。
现在可以使用照片和新设置重新启动。试一试。

./re x849

这将恢复849型的运行,但这一次,当我们的其他条件满足时,当中心氢降到1e-3以下时,运行将停止。这将发生在975型左右。

5. Saving a model

照片文件是机器可读的二进制文件,它不是为可移植到不同的机器甚至不同版本的MESA而设计的。因此,我们需要另一种方法来保存模型,以便我们以后使用它,可能作为以后运行的初始模型,或者发送给某人,让他们与自己的MESA副本一起使用。
在运行结束时保存一个模型文件。转到inlist的&star_job部分的以下行:

! save a model at the end of the run
save_model_when_terminate = .false.
save_model_filename = '15M_at_TAMS.mod'

告诉MESA想在最后保存一个模型文件,方法是编辑inlist并将save_model_when_terminate更改为true
保存文件,然后从与以前相同的位置重新启动MESA。

./re x849

这次当运行结束时,MESA将保存一个名为15M_at_TAMS.mod的模型。

6. Loading a model

现在可以开始研究恒星的后主序列演化,使用刚刚保存的模型开始一个新的MESA运行。为了做到这一点,列表可能是这样的:

&star_job
  ! see star/defaults/star_job.defaults

  ! start a run from a saved model
  load_saved_model = .true.
  load_model_filename = '15M_at_TAMS.mod'

  ! display on-screen plots
  pgstar_flag = .true.

/ !end of star_job namelist

&eos
  ! eos options
  ! see eos/defaults/eos.defaults

/ ! end of eos namelist


&kap
  ! kap options
  ! see kap/defaults/kap.defaults
  use_Type2_opacities = .true.
  Zbase = 0.02

/ ! end of kap namelist


&controls
  ! see star/defaults/controls.defaults

  ! options for energy conservation (see MESA V, Section 3)
  energy_eqn_option = 'dedt'
  use_gold_tolerances = .true.

  ! configure mass loss on RGB & AGB
  cool_wind_RGB_scheme = 'Dutch'
  cool_wind_AGB_scheme = 'Dutch'
  RGB_to_AGB_wind_switch = 1d-4
  Dutch_scaling_factor = 0.8

/ ! end of controls namelist

如果想尝试一下,请将前面的文本保存为工作目录中名为inlist_load的文件。确保文件以一个空白的新行结束。然后编辑主inlist文件,使它在inlist中各处使用inlist_load而不是inlist_project(即extra_star_job_inlist1_nameextra_controls_inlist1_name)。
然后继续:

./rn

MESA将使用新保存的文件启动。与照片不同,保存的模型没有系统内部状态的完整快照。照片保证给出相同的结果;保存的模型则不是。当运行已保存的模型时,与在保存之前的运行中看到的模型相比,可能会有微小的差异。差异应该是很小的。

7. Learning about the many MESA options

看完前面的列表后,更迫切的问题可能是“这些选项是从哪里来的?”以及“如何找到适合的选项?”
包含所有MESA选项及其默认值的描述的文件位于该目录中:

$MESA_DIR/star/defaults

选项是按它们所属的名称列表组织的。因此,文件controls.defaults包含控件名称列表中选项的讨论。
假设我们想更多地了解这个“Dutch_wind”是什么。在controls.defaults中搜索单词“Dutch”,很快就会找到这些选项的以下摘要。

! Dutch_scaling_factor
      ! ~~~~~~~~~~~~~~~~~~~~

      ! The "Dutch" wind scheme for massive stars combines results from several papers,
      ! all with authors mostly from the Netherlands.

      ! The particular combination we use is based on
      ! Glebbeek, E., et al, A&A 497, 255-264 (2009) [more Dutch authors!]

      ! For Teff > 1e4 and surface H > 0.4 by mass, use Vink et al 2001
      ! Vink, J.S., de Koter, A., & Lamers, H.J.G.L.M., 2001, A&A, 369, 574.

      ! For Teff > 1e4 and surface H < 0.4 by mass, use Nugis & Lamers 2000
      ! Nugis, T.,& Lamers, H.J.G.L.M., 2000, A&A, 360, 227
      ! Some folks use 0.8 for non-rotating mdoels (Maeder & Meynet, 2001).

      ! ::

    Dutch_scaling_factor = 0d0


      ! Dutch_wind_lowT_scheme
      ! ~~~~~~~~~~~~~~~~~~~~~~

      ! For Teff < 1e4

      ! Use de Jager if ``Dutch_wind_lowT_scheme = 'de Jager'``
      ! de Jager, C., Nieuwenhuijzen, H., & van der Hucht, K. A. 1988, A&AS, 72, 259.

      ! Use van Loon if ``Dutch_wind_lowT_scheme = 'van Loon'``
      ! van Loon et al. 2005, A&A, 438, 273.

      ! Use Nieuwenhuijzen if ``Dutch_wind_lowT_scheme = 'Nieuwenhuijzen'``
      ! Nieuwenhuijzen, H.; de Jager, C. 1990, A&A, 231, 134

      ! ::

    Dutch_wind_lowT_scheme = 'de Jager'

可以浏览.defaults文件,以熟悉可用的内容。选择的数量太多,可以使用test_suite

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mesa学习笔记#1:Running MESA 的相关文章

随机推荐

  • AJAX模拟Form表单上传

    当前端上传图片的时候 需要传递给后端的是一个file对象 而不是一个路径 而files就是包含了图片的所有设置 包括大小 类型 内容等等 var xxx this container find xxx 0 files 将jquery转换成d
  • IDEA主菜单栏不小心按消失了的解决方法

    如图所示 这两行的消失解决方法如下 第一行 在代码区按两下shift键 出现搜索栏 在搜索栏里输入view 如下 这里没有找到Main Menu 点击左下方的很小的more 显示如下 找到Main Menu 点击使其变为ON即可 第二行 点
  • 【C++】map/multimap容器

    1 map基本概念 2 map构造和赋值 include
  • numpy如何将数组元素全部输出,不折叠展示!

    在print之前添加 np set printoptions threshold np inf 将数组的元素全部打印出来 添加前 添加后
  • 本网站服务器。。。。。。。。这句话是什么意思呢?

    网站一般是建立在服务器中 服务器一般是由中央机房管理 所以中央机房在哪个国家地区 一般是由当地的政府进行管理 其他的地方暂时无法管理 今天我们在分享一些写真壁纸 更多写真壁纸 可以关注公众号 优星馆
  • python导入模块的变量,使用python中的变量导入模块

    本问题已经有最佳答案 请猛点这里访问 我有一个即时导入模块的脚本 由于模块名称会在新版本出现时立即更改 因此很难检查脚本中的特定模块名称是否也发生了更改 因此 我将模块名保存在脚本顶部的变量中 如本例中所示 var1 moduleName1
  • 我接手前同事写的烂Java代码,不小心搞出了一个内存泄露事故

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 String 字符串在内存里是如何存储的 String intern 方法 String 字符串是如何引发内存泄漏呢 总结 今天给大家聊聊咱们平时写代码的时候
  • 【python】12.比较运算符与逻辑运算符

    比较运算符 运算符 描述 示例 判断相等 如果两个操作数的结果相等 则条件结果为真 True 否则条件结果为假 False a 3 b 3 则 a b 为True 不相等 如果两个操作数的结果不相等 则条件结果为真 True 否则条件结果为
  • Springbot启动报错-类文件具有错误的版本 61.0, 应为 52.0

    这是由于Spring6以及SprinBoot3 0开始最低支持JDK17 所以如果springboot版本设置过高 而jdk过低的话 就会报该错误 可以降低springboot或是提高jdk版本 降低springboot方式如下 打开pom
  • 【xshell】xshell 自动换行设置

    1 概述 linux连接终端使用从putty切换到xshell时 发现xshell中在显示长文本时不会自动换行 甚是郁闷 查看官方文档 解决方法为启用xshell中VT模式下的Auto Wrap Mode 搞定 如下图 初始VT模式 Aut
  • RTThread中falut定位方法

    RTThread中fault定位方法 在 RTThread中HardFault Handler分析 一文中已经分析了RTThread中对于fault中断的处理方法 接下来讲解如何根据错误输出信息对程序出现fault的位置进行定位 rtthr
  • Python基础(list列表的扩展方式和dict的用法)

    一 list列表扩展的方式有几种 或者说添加元素的方法 1 append 将对象追加到列表中最后一个元素的末尾 2 extend 通过从可选对象追加元素来扩展列表 3 insert 在索引前插入对象 以此来扩展列表 二 对 cherry l
  • 车与羊的选择

    电影 决胜21点 开始部分 课堂上教授问了这样一个问题 假设你正在参加一个电视游戏节目 被要求在三扇门中选择一扇 其中一扇后面有一辆车 其余两扇后面则是羊 你选择了一扇门 假设是1号门 这时候不知什么原因 主持人 他知道各个门后面都有什么
  • Typec协议之PD通信消息详解一

    Messages 消息由消息头和可变长度 包括零 数据部分组成 消息 头 数据 格式如下图 1 只包含头消息 其它为PHY Layer 2 包含消息头和数据消息 3 包含消息头和数据消息 和扩展的消息 Message Header 从表中可
  • 学习笔记--Verilog HDL高级数字设计--第六章组合逻辑与时序逻辑的综合

    组合逻辑与时序逻辑的综合 综合引擎能够自动完成一组布尔函数的最简化 并将结果映射成能满足设计目标的硬件实现 转换 优化 映射 本章将介绍如何编写易于综合的Verilog模型 综合工具完成的工作 1 检测并消除冗余项 2 查找组合反馈环路 3
  • 模糊c均值聚类_模式识别:K均值算法&模糊c均值算法的应用

    1 背景介绍 在实际应用场景中我们会遇见很多无监督分类的任务 样本不具有类别标注 我们无法通过有监督学习设计分类器 基于样本间相似性度量的聚类方法是无监督学习的重要组成部分 一般来说 聚类准则是根据样本之间的距离或相似程度来定义的 通常将相
  • mysql死锁问题分析

    线上某服务时不时报出如下异常 大约一天二十多次 Deadlock found when trying to get lock Oh My God 是死锁问题 尽管报错不多 对性能目前看来也无太大影响 但还是需要解决 保不齐哪天成为性能瓶颈
  • EDK2编译记录

    EDK2 EDK2 PLATFORM EDK2 NON OSI 以上三个仓库 EDK2是主仓库 EDK2 PLATFORM是和EDK2版本对应的板子和CPU相关的仓库 比如树莓派的就在这个里面 EDK2 NON OSI是有一些license
  • 表的读写分离的优缺点?

    读写分离是一种常见的数据库优化策略 将数据库的读操作和写操作分别分配给不同的数据库实例处理 以下是读写分离的优缺点 优点 提升读取性能 通过将读操作分发到专用的读库 可以减轻主库的读取压力 提升整体的读取性能 横向扩展能力 读写分离方案为系
  • Mesa学习笔记#1:Running MESA

    Mesa学习笔记 1 Running MESA Running MESA 关于如何使用MESA来演化一颗恒星 MESA DIR 目录有许多子目录 这些子目录中的大多数都是模块 MESA中的 M 它们提供一些特定的功能 例如 kap 提供计算