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の状態を出力

$ latestjob
  現在のディレクトリで実行された直近のジョブの標準出力の一部を表示

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

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

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

$ 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",
  ],
}

シミュレーションバグレポート自動収集スクリプト

以下のコマンド出力をまとめて Markdown 形式のレポート (report.md) を自動生成.

  1. カレントディレクトリ(pwd
  2. MPIEMSES3D のバージョン情報(module load hdf5 fftw; ./mpiemses3D --version
  3. 入力ファイル内容(cat plasma.inp
  4. 最新ジョブのログ(latestjob -n 100 / latestjob -n 100 -e

シミュレーションディレクトリで以下のように実行し、報告時に必要な最小限のデータを集約する。

$ collect_report

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

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

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

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.12.2.tar.gz (38.4 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.12.2-py3-none-any.whl (46.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for camptools-0.12.2.tar.gz
Algorithm Hash digest
SHA256 e976541b11af13e4150a9b42d8b3976a20692c3304466f598dea5176f48f7597
MD5 8991d3496d8b15c8febb7f6d95c90775
BLAKE2b-256 603ad33d52be7fc84fa45f1f8d13d50e31cac388d1279a52d9e0ca52a1a5d593

See more details on using hashes here.

File details

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

File metadata

  • Download URL: camptools-0.12.2-py3-none-any.whl
  • Upload date:
  • Size: 46.4 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.12.2-py3-none-any.whl
Algorithm Hash digest
SHA256 37638a40f47dd33106e3f12d3dfc0c09b056e7cfdf21de7b148cf26118a35798
MD5 6ead5c03aec91f48f0c476ac1bf6f12a
BLAKE2b-256 781ebb24fd56750fadfce16abf9b04f58bb2b15b4932bace50de46937586fd0a

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