Skip to main content

Tools for camphor

Project description

camptools

camphor用ツール

インストール

  pip install camptools

コマンド一覧

ジョブを投入し、ジョブIDを記録する

$ nmysbatch <job file> -m <message> -d <directory>
  jobを投入し、job情報を記録する(job_status.sh, joblist.shなどに使用)
  directoryを指定した場合、指定ディレクトリに移動後にqsubを実行

$ mysbatch <job file> -m <message> -d <directory>
  jobを投入し、job情報を記録する(job_status.sh, joblist.shなどに使用)
  directoryを指定した場合、指定ディレクトリに移動後にqsubを実行
  投入されるjobファイルは、パラメータファイルplasma.inpに応じてノード数を決定し置換したもの
  python環境にf90nmlが必要
  
  <job file>の形式は以下のようにすること
    1. #SBATCH --rsc p=32:t=1:c=1

実行中のジョブ状態を確認する

$ job_status
  jobの状態と標準出力の一部を出力

$ joblist
  jobの状態を出力

これまでに投入したジョブ一覧を表示する

$ jobhistory -n <num outputs> --correct_date
  過去のjobのリストを表示
  <job id>, <directory>, <message>, <date>

  --correct_date: 
    *.o*ファイルから日付を読み取りjobに日付情報を付加する
    (この日付情報は保存されるため毎回呼ばなくても良い)

EMSESの継続ジョブを投入する

$ extentsim <from-dir> <to-dir> --run
  EMSESの継続シミュレーションを行う
  from-dirに存在するmpiemses3D, job.sh, SNAPSHOT1, generate_xdmf.pyをto-dirにコピーする
  runフラグを指定するとmyqsubによるジョブの投入まで行う

ディレクトリセットを作成する

$ mymkdir --key <key> <directory>
  keyで指定した構成のディレクトリを作成する
  ディレクトリ構成の設定は~/copylist.jsonに記載する
copylist.json
{
  "main": [
        "/home/**/*****/large0/Github/MPIEMSES3D/bin/mpiemses3D",
        "/home/**/*****/large0/job.sh",
        "/home/**/*****/large0/plot_example.ipynb"
  ],

  "emses": [
        "/home/**/*****/large0/Github/MPIEMSES3D/bin/mpiemses3D",
  ],
}

preinp

preinp は、Fortran の NAMELIST 入力ファイル用プレプロセッサを Python で実装した軽量ツールです。 マクロを用いた定義・演算により、手作業では煩雑になりがちなパラメータ生成を自動化できます。

Usage

オプション一覧

オプション 説明 デフォルト
-d, --directory 入力ファイル所在ディレクトリ ./
-i, --preinp_file 前処理対象ファイル名 plasma.preinp
-o, --output 出力ファイル名 plasma.inp
-v, --verbose 詳細ログを表示 オフ

実行例

# 入力ディレクトリ './input' の 'plasma.preinp' を処理
preinp -d input -i plasma.preinp -o plasma.inp

# 詳細ログ付き
preinp -v

マクロ記法

  • !!> で始まる行をマクロ処理の対象とし、末尾に \ を付けると行継続できます。
  • 一時変数の定義: var symbol = value で計算中に利用する変数を登録。
  • 定数定義: symbol = value または symbol(index) = val1, val2 で、最終的に出力される NAMELIST 値を指定。
  • 算術演算・条件式: +, -, *, /, min(a,b), x if cond else y など。
  • 単位変換: (オプション)unit.<name>.trans(value) / unit.<name>.reverse(value) を利用可能。

Example

plasma.preinp:

!!key dx=[0.001],to_c=[10000.0]
&simulation
    nx = 128
!!> var ny = 64
!!> total_cells = nx * ny
!!> velocity = unit.v.trans(10000)
/

生成される plasma.inp:

&simulation
    nx = 128
    total_cells = 8192
    velocity = 0.33356409519815206
/

単位変換についての補足

  • 物理単位系 → EMSES単位系変換 (unit.<name>.trans(value))
  • EMSES単位系 → 物理単位系変換 (unit.<name>.reverse(value))

<name> 一覧

B = Magnetic flux density [T]
C = Capacitance [F]
E = Electric field [V/m]
F = Force [N]
G = Conductance [S]
J = Current density [A/m^2]
L = Inductance [H]
N = Flux [/m^2s]
P = Power [W]
T = Temperature [K]
W = Energy [J]
a = Acceleration [m/s^2]
c = Light Speed [m/s]
e = Napiers constant []
e0 = FS-Permttivity [F/m]
eps = Permittivity  [F/m]
f = Frequency [Hz]
i = Current [A]
kB = Boltzmann constant [J/K]
length = Sim-to-Real length ratio [m]
m = Mass [kg]
m0 = FS-Permeablity [N/A^2]
mu = Permiability [H/m]
n = Number density [/m^3]
phi = Potential [V]
pi = Circular constant []
q = Charge [C]
q_m = Charge-to-mass ratio [C/kg]
qe = Elementary charge [C]
qe_me = Electron charge-to-mass ratio [C/kg]
rho = Charge density [C/m^3]
t = Time [s]
v = Velocity [m/s]
w = Energy density [J/m^3]

param_sweep

YAML 1 枚から複数の EMSES解析ディレクトリを自動生成し、必要ならそのままジョブ投入まで行うツール。

Usage

1. 基本ディレクトリ構成

project/
├── sweep.yaml            # ← ① サーベイ定義
└── plasma.preinp.j2      # ← ② Jinja2 テンプレート

実験ごとに複数の *.yaml / *.j2 を置いても OK です。

2. sweep.yaml の書き方

# schemaは未用意
# $schema: https://raw.githubusercontent.com/USER/param_sweep/main/schema/sweep.schema.json

# 例: scale × ratio の 2×3 = 6 ケース
cases:
  - scale: [0.5, 1.0]
    ratio: [0.3, 1.0]
    nstep: 200000
  - scale: [0.5, 1.0]
    ratio: [0.6]
    nstep: 500000
  • params: … リストは 直積展開、スカラーは共通値。
  • cases: … 手書きで追加・上書き・除外。_skip / _only が使用可。

3. テンプレート (plasma.preinp.j2)

&tmgrid
    dt = {{ dt | default(0.004) }}
    nx = {{ nx }}
    ny = {{ ny }}
    nz = {{ nz }}
/
  • {{ var }} が YAML/計算結果で置換。
  • default() フィルタで未定義時のフォールバックを設定可能。

4. CLI の基本操作

# dry-run: ディレクトリ名だけ表示
$ param_sweep sweep.yaml --dry-run
exp_scale0p5_ratio0p3
exp_scale0p5_ratio0p6
…

# ディレクトリ生成&preinp 実行(ジョブ未投入)
$ param_sweep sweep.yaml --template plasma.preinp.j2

# 生成後に mysbatch で投入
$ param_sweep sweep.yaml --run

# YAML を編集せずに一時上書き
$ param_sweep sweep.yaml -s ratio=10 --dry-run

※ コマンドラインの指定は YAML の設定より常に優先されます。

※ ディレクトリはmymkdirのデフォルトで生成されます。シミュレーションに必要なファイル群はそちらで指定してください。

5. ディレクトリ名のルール

exp_scale0p5_ratio1_density1e6  # 0.5→0p5, 1e6→1M, 0.02→20m
  • キーはアルファベット順。
  • 値は 工学表記 で短縮化(naming.safe() を参照)。

6. 典型的ワークフロー

$ vim sweep.yaml                # 範囲を追加
$ param_sweep sweep.yaml --dry-run    # 名称確認
$ param_sweep sweep.yaml --run        # 実行開始

変数を増やすときは

  1. YAML の params: に追加
  2. テンプレートに {{ var }} を追加 だけで OK。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

camptools-0.11.3.tar.gz (33.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

camptools-0.11.3-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file camptools-0.11.3.tar.gz.

File metadata

  • Download URL: camptools-0.11.3.tar.gz
  • Upload date:
  • Size: 33.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for camptools-0.11.3.tar.gz
Algorithm Hash digest
SHA256 930ba48e7d63677cc71ef072bb3affc16ea434bcd05ff3edeb803ae14f865206
MD5 059a31c13136496fee2bc881f0588045
BLAKE2b-256 befafdbfdacc7234d9ed5d8cde3c8cb7629e51893c187b9d993647639571e712

See more details on using hashes here.

File details

Details for the file camptools-0.11.3-py3-none-any.whl.

File metadata

  • Download URL: camptools-0.11.3-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for camptools-0.11.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5937c1f3b168779fcc35717d9ac352032a120184c2a7ea240a0ca196854de908
MD5 c318003d44fd7a1379cef4a9a2ca7859
BLAKE2b-256 fca0f471ce506648e23017d6d380a2ca3de54ff751415a0a02b01fe04899441c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page