Status  Name  Description 

ACG Internal: Java Script fragment compiler  Javascript fragment compiler  
ACG Internal: Queue  Queue.js A function to represent a queue Created by Stephen Morley  http://code.stephenmorley.org/  and released under the terms of the CC0 1.0 Universal legal code: http://creativecommons.org/publicdomain/zero/1.0/legalcode  
ACG Internal: Seismic hazard functions  Functions for calculating deterministic ppv's from Grid Hazards  
ACG Internal: Seismic hazard functions  Functions for calculating probabilistic ppv's from Grid Hazards  
ACG Internal: strong ground motion  This library provides some function for strong ground motion  
Binary Search  This library provides some standard often needed mathematical functions binarySearch.js  
Binning  require.mx('mxjs/base/utilities/binning.js');
Convenience functions for binning values. 

Declustering  This library is for declustering seismic data into two components  background and clustered seismicity.
require.mx('mxjs/seismic/stochastic_declustering.js'); 

Eigen  require.mx('mxjs/base/math/matrix/eigen.js');
Eigenvalues and eigenvectors solver for NxN matrices 2 <= N <= 6. The source is http://www.akiti.ca/EigR12Solver.html. 

EstimateMUL  require.mx('mxjs/seismic/hazard/mmax/combined.js');
Interface to various MUL estimation methods. 

EventsTriggering  require.mx('mxjs/DSP/events_triggering.js');
Locate events in sensor data. 

ExportDXF  require.mx('mxjs/mesh/exportDXF.js');
Export MeshTA.Mesh meshes to DXF. 

GammaFunction  require.mx('mxjs/base/math/statistics/gamma_function.js');
This is a list of utility functions around computing the gamma function. These implementations are taking from the java package commons:commonsmath3:3.6 

geometry  require.mx('mxjs/base/math/geometry.js');
This library provides some standard often needed mathematical functions. 

glMatrix  require.mx('mxjs/base/math/matrix/glmatrix.js');
See the glmatrix website for documentation on this library. 

GridBasedUtils  Helper functions for the Grid Based system  
GridTools  require.mx('mxjs/mesh/gridtools.js');
Functions for using grid data (e.g. to convert grid data from a table into a representation that can be used with isosurface generators such as SurfaceNets). 

GTE Symmetric Eigensolver 3x3  require.mx('mxjs/base/math/matrix/GteSymmetricEigensolver3x3.js');
This is a javascript port of the noniterative symmetric eigensolver for 3x3 matrices from Geometric Tools: https://www.geometrictools.com The original GteSymmetricEigensolve3x3.h is authored by David Eberly, Geometric Tools, Redmond WA 98052 Copyright (c) 19982019 Distributed under the Boost Software License, Version 1.0. http://www.boost.org/LICENSE_1_0.txt http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt 

GutenbergRichter  require.mx('mxjs/seismic/gutenbergrichter.js');
GutenbergRichter relationship tools. 

HudsonPlots  This library provides functions to assist with hudson plots in mXrap  
IJOCToGrid  require.mx('mxjs/mesh/IJOCtogrid.js');
Some functions for dealing with IJOC definitions of grid data. 

KDTreeTable  require.mx('mxjs/base/algorithms/kdtree.js');
This library provides kd tree functionality for searching tables. The dimensions of the kd trees are table columns. The kd tree can then be searched based on those dimensions. Compared to the builtin kd tree, the search functions provided by this kd tree require the caller to provide a function that determines the distances between two points in the kdimensional space. That is, you provide the definition of distance when performing searches such as findNearestNeighbour or
findAtLeastXWithinRange . 

LibIDW  const LibIDW = require.mx('mxjs/base/algorithms/inverse_distance_weighting.js');  
MeshTA  require.mx('mxjs/mesh/meshta.js');
This is the MeshTA library. It provides a common representation for triangular meshes, and standard implementations of some operations on meshes. 

OrderedTableRanges  require.mx('mxjs/base/algorithms/ordered_table_ranges.js');
Tools for iterating over ranges of ordered tables. 

Orientation  require.mx('mxjs/geotech/orientation.js');
Provides convenience methods for converting between vectors and various systems for defining orientations (e.g. dip & dip dir). 

PPV probability calc  Probabilistic strong ground motion evaluation Used in Grid based hazard app  
Quad8  This library provides some standard often needed mathematical functions  
QuadricMeshSimplification  require.mx('mxjs/mesh/quadricmeshsimplification.js');
An adaption of the mesh simplification method from https://github.com/sp4cerat/FastQuadricMeshSimplification 

Seismic Hazard  This library has a number of functions related to computing seismic hazard
const Hazards = require.mx('mxjs/seismic/hazard/seismic_hazard.js'); 

SignalFilters  require.mx('mxjs/DSP/filters.js');
Signal filtering. 

SurfaceNets  require.mx('mxjs/mesh/surfacenets.js');
Original Surface Nets, modified to generate boundary surfaces between two volumes. This was loosely based on Mikola Lysenko's Naive SurfaceNets implementation, which should be in this directory as surfacenetsoriginal.js. Based on: S.F. Gibson, "Constrained Elastic Surface Nets". (1998) MERL Tech Report. 

Sylvester  require.mx('mxjs/base/math/matrix/sylvester.js');
See the Sylvester website for documentation on this library. 

Typed Array Extensions  require.mx('mxjs/base/utilities/typed_array_extensions.js');
Adds convenience methods to the TypedArray types. 

WrappedTypedArray  require.mx('mxjs/base/utilities/wrapped_typed_array.js')
Wrap TypedArray objects to provide functions that rely on dynamic sizing (push, pop, etc.). 

Xadapter  This library provides adapters for use with different data inputs and outputs.
Adapters are objects that behave like data tables, while reading from or writing to a different underlying data structure, such as an array or a set of arrays. Tabular data can be stored in different ways within mXrap, e.g. in a data table, or in a set of arrays, or in an interleaved array. As a result, it can be difficult to standardise what each library function should accept as input. After much consideration, the mXrap team have settled on the data table method  libraries in mXrap will in general take in a Table and its read or write functions as the standard way of reading/writing tabular data. If your tabular data is in a set of column arrays, or in an interleaved array, you will instead want to use an adapter. You can create an adapter over the arrays/array, which provides you with an object that pretends to be a data table, when its actually reading from/writing to the underlying arrays. You can then use this adapter to provide input/output to library functions which take in data tables. Adapters can be readonly, or writeenabled. You can use standard data table methods like size() and if writeenabled, grow(), resize(), reserve(). You can also create adapters that are in "subset" mode, that is, they operate over a specified range of the arrays or data table. When in "subset" mode, you can write to the records (if writeenabled), but you cannot resize or add/remove records. One caveat with using adapters is that they are relatively expensive to create. Hence you should always free() your adapters once you are done using them. Freed adapters are reused where possible, which greatly reduces the overhead of using adapters. 

Xalloc  This library provides functions to allocate and reuse objects and arrays.  
Xchart  This library provides functions to assist in rendering lines and points in a 2D chart in mXrap  
Xfit  This library provides functions to perform fitting of 2D data to various functions  
Xhash  This library provides functions to perform generation of hashes.  
XHeap  This library provides a priority queue (heap) implementation  
Xkernel  This library provides functions to perform kernel functions, eg for transparency transforms  
XLAMath  This library provides functions for linear algebra transformations
This is very much still a work in progress, the functionality here has only been tested with a few sample cases. 

Xmesh  xmesh.js  
XmomentTensor  This library provides functions to assist with moment tensors in mXrap  
Xoptimise  A library of optimisation functions  
Xplot  This library provides functions to perform plotting and generation of various 2D charts  
XPolyMath  This library provides functions for polynomial operations
This is very much still a work in progress, the functionality here has only been tested with a few sample cases. 

XprobMethods  This library provides functions to assist in probabilistic methods  
Xrockstrength  This library contains functions for the formulation of rock mass strength.
The HoekBrown strength envelope is based on the 2002 strength envelope formulation. HoekBrown strength parameters for rockmasses under squeezing and spalling conditions is based on Carter et al. (2008) Application of modified HoekBrown transition relationships for assessing strength and post yield behaviour at both ends of the rock competence scale. J. S.A. Ist. Min. Metal., vol 108, pp 325338 The General formulation contains a seamless transition between Carter et al. (2008) formulation from squeezing through general HoekBrown behaviour to spalling conditions. The Xgeneral formulation provides a Generalised HoekBrown failure criterion with implicit Tensile strength. Please note: Carter et al. (2008) and other papers published by the authors on the same subject contains a typing error in one of the equations that is corrected in this implementation. 

Xshapes  This library provides functions to assist in rendering 3D shapes in mXrap. require.mx('mxjs/base/xplot3D.js');  
Xstats  This library provides statistical functions.  
Xstats.1  Inverse Error function http://stackoverflow.com/questions/12556685/isthereajavascriptimplementationoftheinverseerrorfunctionakintomatl  
XStereonet  This library provides functions to plot stereonets in mXrap
Note, implementation includes ported Matlab scripts written by Nestor Cardozo for the book Structural Geology Algorithms by Allmendinger, Cardozo, & Fisher, 2011 

Xstressmechanics  This library contains several functions to manipulate and stress tensors and perfom calculations of stress This does not contain functions for strength and strain calculations as these are dependent on specific models of material behaviour such functions are/should be provided in seperate libraries. For the calculation of rock mass strength see the Xrockstrength library  
xutilities  This utilities lib contains utilites for: dates, maths, arrays, asserts, conversions and misc. These functions, where possible, should be used to avoid common coding errors. AVALIABLE UTILITIES: const array_uti = utilities.xarray; const assert_uti = utilities.xassert; const conv_uti = utilities.xconvert; const math_uti = utilities.xmath; const group_uti = utilities.xgroup; const misc_uti = utilities.xmisc; EXAMPLE IMPLEMENTATION: const utilities = require.mx('mxjs/base/xutilities.js') //load utility lib const assert_uti = utilities.xassert; //Optional parse of the individual utility libraries utilities are accessed as (if not parsed): utilities.xassert.isnum(1); returns true; OR (if parsed) date_uti.isnum('hello_world'); returns false; 