emout.utils package

Submodules

emout.utils.emsesinp module

class emout.utils.emsesinp.AttrDict(*args, **kwargs)[source]

Bases: dict

class emout.utils.emsesinp.InpFile(filename=None, convkey=None)[source]

Bases: object

パラメータファイルを管理する.

nmlf90nml.Namelist

Namelistオブジェクト

conversion(unit_from: Units, unit_to: Units)[source]
remove(key, index=None)[source]

パラメータを削除する.

Parameters:
  • key (str) – グループ名(&groupname)またはパラメータ名(parameter)

  • index (int, optional) – 特定のインデックスのみ削除する場合指定する, by default None

save(filename, convkey=None)[source]

パラメータをファイルに保存する.

Parameters:
  • filename (str or Path) – 保存するファイル名

  • convkey (UnitConversionKey, optional) – 単位変換キー, by default None

setlist(group, name, value, start_index=1)[source]

リスト型のパラメータを設定する.

Parameters:
  • group (str) – グループ名(&groupname)

  • name (str) – パラメータ名(parameter)

  • value (type or list(type)) – 設定する値

  • start_index (int, optional) – 設定するインデックス, by default 1

class emout.utils.emsesinp.UnitConversionKey(dx, to_c)[source]

Bases: object

単位変換キー.

dx

グリッド幅[m]

Type:

float

to_c

EMSES単位系での光速の値

Type:

float

property keytext

単位変換キーの文字列を返す.

Returns:

単位変換キーの文字列

Return type:

str

classmethod load(filename)[source]

ファイルから単位変換キーをロードする.

ファイルの一行目に以下のような文字列が書かれている場合dx, to_cを読み取る. !!key dx=[1.0],to_c=[10000.0]

Parameters:

filename (str or Path) – 単位変換キーを含むファイル.

Returns:

単位変換キー

Return type:

UnitConversionKey or None

emout.utils.group module

class emout.utils.group.Group(objs, attrs=None)[source]

Bases: object

複数のオブジェクトをまとめて処理するクラス.

objs

オブジェクトのリスト

Type:

list[Any]

Notes

以下の関数以外の組み込み関数は管理するオブジェクトに対して実行する. - repr : return ‘Group([objs]) - str : return ‘Group([objs])’ - format : return ‘Group([objs])’ - len : return len(objs) - iter : return iter(objs) - in : return other in objs

Examples

以下のように複数のオブジェクトをまとめて処理することができる.

>>> group = Group([[1, 2], [3, 4]])
>>> print(group)
Group([[1, 2], [3, 4]])
>>> print(group[0])
Group([1, 3])
>>> group.append(5)
>>> print(group)
Group([[1, 2, 5], [3, 4, 5]])
filter(predicate)[source]

オブジェクトのうち関数が真を返すもののみで新しいグループを生成する.

Parameters:

predicate (Callable[Any, bool]) – フィルタ関数

Returns:

新しいグループ

Return type:

Group

Examples

>>> group = Group([1, 2, 3])
>>> group.filter(lambda n: n <= 2)
Group([1, 2])
foreach(callable)[source]

すべてのオブジェクトに対して関数を適用する.

Parameters:

callable (Callable[Any, ]) – 適用する関数

Examples

>>> group = Group([1, 2, 3])
>>> group.foreach(print)
1
2
3
map(callable)[source]

すべてのオブジェクトに対して関数を適用し、新しいグループを生成する.

Parameters:

callable (Callable[Any, Any]) – 適用する関数

Returns:

新しいグループ

Return type:

Group

Examples

>>> group = Group([1, 2, 3])
>>> group.map(lambda n: n * 2)
Group([2, 4, 6])

emout.utils.poisson module

class emout.utils.poisson.DirichletPoissonBoundary(axis: int, boundary_values: Tuple[float] = (0.0, 0.0))[source]

Bases: PoissonBoundary

correct_boundary_values(phi: ndarray) None[source]
property fft_backward: Callable[[ndarray], ndarray]
property fft_forward: Callable[[ndarray], ndarray]
get_target_slice() slice[source]
modified_wave_number(k: int, n: int) float[source]
transpose_boundary_values(rho_target: ndarray, dx: float) None[source]
class emout.utils.poisson.FFT3d(forwards: List[Callable[[ndarray], ndarray]], backwards: List[Callable[[ndarray], ndarray]])[source]

Bases: object

backward(data3d: ndarray) ndarray[source]
forward(data3d: ndarray) ndarray[source]
class emout.utils.poisson.NeumannPoissonBoundary(axis: int, boundary_values: Tuple[float] = (0.0, 0.0))[source]

Bases: PoissonBoundary

correct_boundary_values(phi: ndarray) None[source]
property fft_backward: Callable[[ndarray], ndarray]
property fft_forward: Callable[[ndarray], ndarray]
get_target_slice() slice[source]
modified_wave_number(k: int, n: int) float[source]
transpose_boundary_values(rho_target: ndarray, dx: float) None[source]
class emout.utils.poisson.PeriodicPoissonBoundary(axis: int, boundary_values: Tuple[float] = (0.0, 0.0))[source]

Bases: PoissonBoundary

correct_boundary_values(phi: ndarray) None[source]
property fft_backward: Callable[[ndarray], ndarray]
property fft_forward: Callable[[ndarray], ndarray]
get_target_slice() slice[source]
modified_wave_number(k: int, n: int) float[source]
transpose_boundary_values(rho_target: ndarray, dx: float) None[source]
class emout.utils.poisson.PoissonBoundary(axis: int, boundary_values: Tuple[float] = (0.0, 0.0))[source]

Bases: object

property axis: int
property boundary_values: Tuple[float]
abstract correct_boundary_values(phi: ndarray) None[source]
abstract property fft_backward: Callable[[ndarray], ndarray]
abstract property fft_forward: Callable[[ndarray], ndarray]
abstract get_target_slice() slice[source]
abstract modified_wave_number(k: int, n: int) float[source]
abstract transpose_boundary_values(rho_target: ndarray, dx: float) None[source]
emout.utils.poisson.poisson(rho: ndarray, dx: float, boundary_types: List[str] = ['periodic', 'periodic', 'periodic'], boundary_values: Tuple[Tuple[float]] = [(0.0, 0.0), (0.0, 0.0), (0.0, 0.0)], btypes: str | None = None, epsilon_0=8.8541878128e-12)[source]

Solve Poisson’s equation with FFT.

Parameters:
  • rho (np.ndarray) – 3-dimentional array of the charge density [C/m^3]. The shape is (nz+1, ny+1, nx+1).

  • boundary_types (List[str] of {'periodic', 'dirichlet', 'neumann'},) – the boundary condition types, by default [‘periodic’, ‘periodic’, ‘periodic’]

  • boundary_values (List[Tuple[float]]) – the boundary values [(x-lower, x-upper), (y-lower, y-upper), (z-lower, z-upper)], by default [(0., 0.), (0., 0.), (0., 0.)]

  • btypes (str) – string consisting of prefixes of boundary conditions, by default None. If this is set, it takes precedence over boundary_types.

  • dx (float, optional) – the grid width [m], by default 1.0

  • epsilon_0 (_type_, optional) – the electric constant (vacuum permittivity) [F/m], by default cn.epsilon_0

Returns:

3-dimentional of the potential [V].

Return type:

np.ndarray

emout.utils.units module

class emout.utils.units.UnitTranslator(from_unit, to_unit, name=None, unit=None)[source]

Bases: object

単位変換器.

from_unit

変換前の値

Type:

float

to_unit

変換後の値

Type:

float

ratio

変換係数 (変換後 = 変換係数 * 変換前)

Type:

float

name

単位の名前(例: “Mass”, “Frequency”)

Type:

str or None

unit

単位(例: “kg”, “Hz”)

Type:

str or None

reverse(value)[source]

単位逆変換を行う.

Parameters:

value (float) – 変換後の値

Returns:

変換前の値

Return type:

float

set_name(name, unit=None)[source]

名前を設定する.

Parameters:
  • name (str) – 名前

  • unit (str) – 単位

Returns:

self

Return type:

UnitTranslator

trans(value, reverse=False)[source]

単位変換を行う.

Parameters:
  • value (float) – 変換前の値(reverse=Trueの場合変換後の値)

  • reverse (bool, optional) – 逆変換を行う場合True, by default False

Returns:

変換後の値(reverse=Trueの場合変換前の値)

Return type:

float

class emout.utils.units.Units(dx: float, to_c: float)[source]

Bases: object

EMSES用の単位変換器を管理する.

SI単位系からEMSES単位系への変換を行う.

B

Unit translator for Magnetic flux density [T]

C

Unit translator for Capacitance [F]

E

Unit translator for Electric field [V/m]

EC

Unit translator for Electric conductivity [S/m]

F

Unit translator for Force [N]

G

Unit translator for Conductance [S]

H

Unit translator for Magnetic field [A/m]

J

Unit translator for Current density [A/m^2]

L

Unit translator for Inductance [H]

N

Unit translator for Flux [/m^2s]

P

Unit translator for Power [W]

R

Unit translator for Resistance [Ω]

T

Unit translator for Temperature [K]

W

Unit translator for Energy [J]

a

Unit translator for Acceleration [m/s^2]

c

Unit translator for Light Speed [m/s]

dx

Grid length [m]

e

Unit translator for Napiers constant []

e0

Unit translator for FS-Permttivity [F/m]

eps

Unit translator for Permittivity [F/m]

f

Unit translator for Frequency [Hz]

i

Unit translator for Current [A]

kB

Unit translator for Boltzmann constant [J/K]

length

Unit translator for Sim-to-Real length ratio [m]

m

Unit translator for Mass [kg]

m0

Unit translator for FS-Permeablity [N/A^2]

me

Unit translator for Electron mass [kg]

mi

Unit translator for Proton mass [kg]

mu

Unit translator for Permiability [H/m]

n

Unit translator for Number density [/m^3]

phi

Unit translator for Potential [V]

pi

Unit translator for Circular constant []

q

Unit translator for Charge [C]

q_m

Unit translator for Charge-to-mass ratio [C/kg]

qe

Unit translator for Elementary charge [C]

qe_me

Unit translator for Electron charge-to-mass ratio [C/kg]

rho

Unit translator for Charge density [C/m^3]

t

Unit translator for Time [s]

to_c

Light speed in EMSES

translators()[source]

変換器のリストを返す.

Returns:

変換器のリスト

Return type:

list(UnitTranslator)

v

Unit translator for Velocity [m/s]

w

Unit translator for Energy density [J/m^3]

emout.utils.util module

class emout.utils.util.DataFileInfo(filename)[source]

Bases: object

データファイル情報を管理するクラス.

property abspath

ファイルの絶対パスを返す.

Returns:

ファイルの絶対パス

Return type:

Path

property directory

ディレクトリの絶対パスを返す.

Returns:

ディレクトリの絶対パス

Return type:

Path

property filename

ファイル名を返す.

Returns:

ファイル名

Return type:

Path

class emout.utils.util.QuantizedPillowWriter(fps=5, metadata=None, codec=None, bitrate=None)[source]

Bases: PillowWriter

色数を256としたPillowWriterラッパークラス.

grab_frame(**savefig_kwargs)[source]

Grab the image information from the figure and save as a movie frame.

All keyword arguments in savefig_kwargs are passed on to the ~.Figure.savefig call that saves the figure. However, several keyword arguments that are supported by ~.Figure.savefig may not be passed as they are controlled by the MovieWriter:

  • dpi, bbox_inches: These may not be passed because each frame of the

    animation much be exactly the same size in pixels.

  • format: This is controlled by the MovieWriter.

class emout.utils.util.RegexDict[source]

Bases: dict

正規表現をキーとする辞書クラス.

get(key, default=None)[source]

Return the value for key if key is in the dictionary, else default.

emout.utils.util.hole_mask(inp, reverse=False)[source]
emout.utils.util.interp2d(mesh, n, **kwargs)[source]
emout.utils.util.range_with_slice(slice_obj, maxlen)[source]

スライスを引数とするrange関数.

Parameters:
  • slice_obj (slice) – スライスオブジェクト

  • maxlen (int) – 最大数(スライスの値が負である場合に用いる)

Returns:

rangeジェネレータ

Return type:

generator

emout.utils.util.slice2tuple(slice_obj: slice)[source]

スライスオブジェクトをタプルに変換する.

Parameters:

slice_obj (slice) – スライスオブジェクト

Returns:

(start, stop, step) – スライス情報をもつタプル

Return type:

int

Module contents