gics
Given a batch of .vlsv files, containing ground magnetic field vector data at different times, calculate the north & east components of induced ground electric field [V/m], and save in corresponding .vlsv files
This script has been tested with the Vlasiator runs EGL, FHA, FIA note that the usefulness for EGL is limited because there is no ionosphere (domain #3) for that run
Note that the Geomagnetically Induced Currents (GICs) can be computed immediately from the geoelectric field: The surface current density is J = sigma*E, where E, sigma are respectively the ground electric field and conductivity.
This script is written for the UH environment. Adapt file paths as needed.
###
- EXAMPLE CALL:
python gics.py
- Example sidecar .vlsv files, containing ground magnetic field data (over the ionosphere mesh), can be found at:
/wrk-vakka/group/spacephysics/vlasiator/3D/FHA/bulk1_sidecars/geoelectric_field/
- gics.E_horizontal(dB_dt, pos, time, sigma=0.001, method='liu')
- Calculate the horizontal electric field by integrating components of dB/dt
References: Cagniard et al 1952 (eq. 12), Pulkinnen et al 2006 (eq. 19)
- Inputs:
dB_dt: cartesian dB/dt [T/s] array dimension [3, len(time)] pos: cartesian position [m] 1D 3-element array, vector position time: 1D array of times [s], monotonically increasing
- Keywords:
sigma = ground conductivity (siemens/meter) method:
- ‘liu’: use integration method described in Liu et al., (2009) doi:10.1029/2008SW000439, 2009
this method is exact for piecewise linear B (i.e., piecewise constant dB/dt)
‘RH-riemann’: use right-handed Riemann sum.
- gics.cartesian_to_spherical(x, y, z)
r > 0 0 < theta < pi -pi < phi < pi all are assumed to be numpy arrays of equal dimensions
returns: r, theta, phi [tuple]
- gics.cartesian_to_spherical_vector(vx, vy, vz, x, y, z)
Convert cartesian vector(s) with coordinates (vx, vy, vz) at the position(s) theta, phi (note: position r does not affect the vector transformation) to spherical coordinates (v_r, v_theta, v_phi)
dimensions of vx, vy, vz, x, y, z arrays must either match or be a single number
- gics.mkdir_path(path)
Make a directory from the stem of an input file name (path)
- gics.spherical_to_cartesian(r, theta, phi)
r > 0 0 < theta < pi -pi < phi < pi all are assumed to be numpy arrays of equal dimensions
returns: x, y, z [tuple]