The odtcalc utility reads an ODT file on stdin that contains one or more tables, and prints to stdout an ODT file consisting of the same tables augmented by additional columns as controlled by command line arguments. This utility enables the calculation and recording of new data table columns that can be computed from existing columns.
Launching
The odtcalc launch command is:
tclsh oommf.tcl odtcalc [standard options] [var unit expr ...] \ <infile >outfilewhere
The computation of a new data value for each row of each new column of
data is performed by passing the corresponding expr command line
argument to Tcl's expr command. The standard collection of
operators and functions are available, and also the variables $pi
and $mu0 representing the commonly used values and
.
The value of other columns in the same row may be accessed by use of the
column label as a variable name. For example, the value of the
Iteration column can be used in expr by including the variable
substitution $Iteration. When column labels include colons, the
expr has the option of using just the portion of the column label
after the last colon as the variable name. For example, the value of the
Oxs_UZeeman::Bx column can be used in expr by including the
variable substitution $Bx. When multiple triples specifying new
data columns are provided, the values of earlier new columns may be used
to compute the values of later new columns. The order of command line
arguments controls the order of the new columns that are added to the
right side of the data table.
Example
Suppose ring.odt contains hysteresis loop data from an Oxsii
simulation where the field was applied in the -plane at an angle of
from the
-axis. The data file holds field and average
magnetization axis component values
,
,
, and
. We
want field and magnetization data projected onto the applied field
axis. We can create those values using odtcalc like so:
tclsh oommf.tcl odtcalc B mT '$Bx*0.86602540378443865+$By*0.5' \ m '$mx*0.86602540378443865+$my*0.5' ” \ < ring.odt > ring-augmented.odtHere
^
for line
continuation instead of the backslash \
.)
To extract just the B and m columns and prepare for import into a spreadsheet program supporting CSV (comma separated value) format, post-process with odtcols:
tclsh oommf.tcl odtcols -t csv B m < ring-augmented.odt > ring-export.dat