美文网首页
BOUT++ 网格产生阅读

BOUT++ 网格产生阅读

作者: 锅炉工的自我修养 | 来源:发表于2020-10-11 20:26 被阅读0次

    创建case

      1. 创建sf2.5-- 调查内外不对称性
      • done
      1. 运行sd10-- 选取相同的辐射case
      • done
      1. 运行sf1.5-- Argon 在较低的注入速率实现脱靶
      • crash
      1. 运行sd16-- 获得合适的辐射case
      • done

    网格

    • 1.找到源文件
      • hyponotoad.pro
      • hypnotoad_version.pro
      • tools/tokamak/gridgen/hypnotoad_version.pro

    2. Hands-on exercises: transport code

    generate the grid file

      1. EFIT 生成网格
      • 通过hypnotoad将 gfile转化为nc-file
      • 网格分辨率:NX=2^{n}+4(径向),NY=2^{n}(极向)
      1. 从实验获得的p-file获得剖面信息
      • 通过pfile2Grid.pro读取p-file
      • 通过prof_fit.pro拟合并smooth剖面
      • Ni2Gridall_im.pro将数据写入nc-file
        image.png

    获取输运系数的一种方式

    基于实验测量的内边界等离子体剖面,有效粒子热输运可以从输运方程获得(不考虑漂移)with sources from inner radial boundary


    geometry used in the simulation

      1. 导入文件
      1. 显示文件的基本信息

    稳态解剖面

      1. 如何绘图?
      1. 含时的问题
      1. 上游剖面(温度+密度)
      • 在边界线内部,我们固定等离子体密度和温度剖面为实验剖面使用计算的输运系数
      • 在SOL,我们计算通过鞘层边界条件使用输运方程,通过扩展台基区输运系数到SOL

    Generate grid-file for Bout++

      1. IDL
      • 通过hypnotoad读取gfile
        • EFIT
      • 网格分辨率:
        • (2^{n}+4) \times 2^{n}(径向,极向)

    Important

    阅读源码ee

    TOKAMAK GRIDS FOR BOUT++

    磁平衡装换

      1. 该code可以被用来作为一个外部的生成GS-磁平衡的工具,用它生成为bout++使用的网格输入文件
      • elite/elite2pdb 从EFIT 格式装换
      • 该程序输出一个中间的PDB文件,然后交互IDL,装换为BOUT++的输入信息
        • all/pdb2bout.pro
    pdb2bout, "intermediate_file.pdb",output="grid.pdb" [,/smooth]
    

    Grid generation

    从EFIT 的磁平衡生成网格,提供内BOUT++使用

    • gridgen/ Grid generation codes
    • gridgen/doc Manual for grid generation

    hypnotoad is a graphical interface in IDL to these routines:

    IDL> hypnotoad
    

    Equilibrium generation

    • 产生近似的磁平衡
      • shifted_circle/ generate shifted circle equilibria

    limiter???????


    Intermediate PDB file format

    • 存储 GS-平衡

    必须的文件

      1. Scalar quantities
      • nx:surface number
      • ny: number of pointer per flux-surface
      1. 1D arrays (nx)
      • psi: psi on each flux surface
      • mu0p: Mu0*pressure
      • mu0pprime
      • f
      • ffprime
      • qsafe: safety factor
      1. 2D arrays (nx by ny)
      • Rxy: Major radius of each point
      • Zxy: Height of each point
      1. Optional quantities

    If these are not present they can be inferred from other quantities or entered manually.

    • Bpxy: Poloidal field
    • Btxy: Toroidal field
    • Brxy: B field in R direction
    • Bzxy: B field in Z direction
    • Ni: density
    • Te: electron temperature
    • Ti: Ion temperature

    Tokamak grid generator in IDL

    B.D.Dudson

    1. Introduction

      1. 磁场线对齐网格对于tokamak模拟是很重要的,有如下特点
      • IDL 环境
      • 自动调整设置,网格生成可自定义,但是输入的最小数目非常小(网格数和psi变化)。PSI变化要求符合边界
      • 可以操作一个任意数目XP的位型,可以应付奇怪的位型

    对于更加复杂的网格生成器,例如CARRE 网格生成器for B2, UEDGE 也可以生成使用与BOUT++的输入。


    Using the Hypnotoad(飞向未来的催眠蛤蟆)

      1. 调用
    IDL> hypnotoad
    

    出现如图的图形界面


    image.png
      1. load the equ(import equ)

    Read G-EQDSK


    image.png
      1. Read boundary

    不尝试识别边界


    image.png
    • 一旦你获得磁平衡和边界,输入径向和极向格数
    • 归一化PSI (0 磁轴,1=innermost separatrix)
    • 自定义重新分配
      1. Generate mesh (create_grid.pro)
      • 定位初始XP,选择哪个是内部的点,已经对应的psi值

      • 约束决定对应的偏滤器靶板以及芯部边界

      • 常数psi到达靶板靶板

      • 下图为下左偏滤器区域的网格。

        image.png
      • 网格并不会总是从左下开始,网格从内X点开始(\psi=1)顺时针产生网格,对于UDN网格从右上开始产生

      • 如果需要,可以再次产生网格

    "Strict boundaries",决定格点是否超过边界。如果关闭偏滤器腿会在边界停止,但是径向网格允许穿过边界

    • 如果觉得合适,可以点击“Output mesh”产生网格。
      image.png

    尽管网格生成是自动,一些网格需要用户交互

    • 检查equ是否合适
    • 电流和压强剖面是否合理
    • 不合适会出现数值问题,产生的结果也是不正确的

      1. 计算压强梯度的公式


        image.png
    • h_{\theta}通过格点几何距离计算,
    • B_{\zeta}f(\psi)
    • B_{\theta}\psi衍生出

    create_mesh.pro using DCTs

    计算的压强与压强的对比
    image.png
    image.png
    image.png

    使用网格生成器

      1. create_grid 获取2D的\psi,产生的沿着流表面的正交网格
    • psi_inner,归一化的\psi在最内边界
      • scalar:用作芯部和PF区域
      • array[0]:芯部的内归一化\psi
      • array[1..n_xpoint]:内\psi for 每一个PF区域
    • psi_outer:最外边界归一化磁通
      • scalar: 芯部和PF区域
      • array[0..n_xpoint-1]:每一SOL区域的最外边界磁通
    • nrad:径向格点数
      • scalar:总的径向网格数,自动分区
      • array[0]:芯部的径向径向格点
      • array[1..(n_xpoint-1)]:边界间的径向格点(从芯部到边界)
      • array[n_xpoint]: 最后一个边界外的径向格点
    • npol:极向格点数
      • scalar: 中的格点数.基于极向arc长度分割极向区域
      • array[0..(3*n_xpoint-1)]:
    • rad_peaking
    • pol_peaking

    4. DCT

    image.png

    5. 寻找关键点

    • OP
    • XP

    6. 区域划分


    7. separatrices

    • 计算经过XP的等高线
    • 闭合一个XP,近似改变\psi
      image.png
      image.png

    reading the source code

    种下一棵树最好的时间是10年前,其次就是当下。

    project:tokamak_grids

    README

      1. 代码产生tokamak问题的输入文件

    grid generation

    pyGridGen

    README

      1. BOUT++ python 预处理 module

    本module包含的文件夹产生一个workflow,为BOUT++产生输入网格文件。改脚本是IDL脚本的延伸翻译 in ../gridgen,功能与../gridgen/test.pro类似


    dependencie:

    ../../../tools/pylib (include in PYTHONPATH)
    matplotlib/pylab
    numpy
    scipy
    sys
    bunch   https://pypi.python.org/pypi/bunch
    mayavi2/mlab
    itertools
    cPickle
    netCDF4
    time
    copy
    ode.lsode  http://web.engr.illinois.edu/~mrgates2/ode/
    
    *Initial development on a MacOS X using Enthought Canopy 1.1 python installation. 
    Most packages should be there by default except maybe mayavi2, ode.lsode and bunch.
    

      1. 执行:python workflow.py
      1. anlyse_equil.py fllows the IDL algorithm step by step, Analyse_equil_2.py 小修,Analyse_equil_3.py 目前最有效。

    workflow.py(main function)

    基本流程

      1. grid

    相关文章

      网友评论

          本文标题:BOUT++ 网格产生阅读

          本文链接:https://www.haomeiwen.com/subject/kqjduktx.html