Solar wind classification
We have devised a fourcategory classification algorithm for the solar wind, based on Gaussian Processes. The four categories are the ones previously adopted in Xu and Borovsky [2015]: ejecta, coronal hole origin plasma, streamer belt origin plasma, and sector reversal origin plasma. The algorithm is trained and tested on a labeled portion of the OMNI2 dataset.
Here, we distribute a database with about 300,000 hours of labeled solar wind data calculated from
OMNI2 for the years 19652007.
Please reference the following paper if you publish results based on this database:
E. Camporeale, A. Care', J. Borovsky (2017)
Classification of Solar Wind with Machine Learning,
J. Geophys. Res., in press

OMNI2_classification.dat (12Mb)
ASCII file with about 300,000 rows and 7 columns. The first three columns are [year, doy, hour]. The last four columns indicate the probability of the event belonging to ejecta, coronal hole origin plasma, streamer belt origin plasma, and sector reversal origin plasma, respectively.

classify_solar_wind.m
MATLAB file with a driver routine to perform Gaussian Process classification on a portion of the OMNI2 dataset. The output is a seven column matrix, as explained above. The routine uses the GPML software, available at http://www.gaussianprocess.org/gpml/code, and the file below.

parameters_classification.mat
This file contains the training set and the optimized hyperparameters to run classify_solar_wind.m
Other codes
I use a variety of computer codes. I have written some of them myself, while others are part of collaborations. Some are freely available, others are proprietary and not distributable. Here you can find a short description of the codes.
 Implicit PIC code
 Curvilinear PIC code
 Diffusion code for radiation belt
 Hot plasma linear dispersion solver
 Linear kinetic solver for inhomogeneous plasma
 Mode conversion
 Software & Data for Machine Learning projects
Implicit PIC code
Standard PIC codes use an explicit timestepping scheme that strongly constrains the choice of grid size and time step, to be numerically stable. The implicit PIC code is based on the implicit moment method and, by using a (semi)implicit time discretization relaxes the stringent stability requirement. Thus one can allow larger grid size, longer time steps, and usually it is possible to resort to physical massratios between species.
I have been involved in the coding of the 2dimensional PIC code Parsek2D . More recently a 3D version of the code, named iPIC3D, has been made available on Github. You can download it here . Contact Giovanni Lapenta for more information.
Curvilinear PIC code
I have been involved to the development of a curvilinear PIC code, named CPIC, during my postdoc at the Los Alamos National Laboratory. The code is 3D and electrostatic, and is used for plasmamaterial interaction studies, allowing fairly arbitrary geometry domains. The details of the code can be found in this paper .
Unfortunately, the code cannot be openly distributed, as is property of LANL.
Diffusion code
Diffusion codes are extensively used in radiation belt studies. I have coded a 2D diffusion code that was later incorporated as part of the 3D code DREAM3D. I have investigated and compared different schemes for the time discretization, including direct and preconditioned iterative solvers. Details of such study can be found in this paper.
DREAM3D is LANL property and not distributed, but the 2D part that I wrote can be distributed upon request.
It also includes a routine to calculate the bounceaveraged diffusion coefficients for fieldaligned propagating waves.
More recently I have started collaborating with Y. Shprits and his group, by using the diffusion code that they have developed in the last several years, VERB, which is also availablae upon request to Dr. Shprits.
Hot plasma linear dispersion solver
The hot plasma linear solver follows the classical derivation of kinetic linear theory from Stix's book. The code has been initially developed by Prof. David Burgess at QMUL (London) and later modified by myself.
In standard mode it uses a NewtonRaphson root finding algorithm, but we have also played with different ideas to overcome the weaknesses of NewtonRaphson (which might actually not converge on a given solution). For instance, we have implemented a bisection method using triangular meshes.
Mode conversion
This code solves a model based on twofluid linear equations, in 2D. It has been used to study the linear mode conversion of a whistler/lower hybrid wave packet impinging on a density striation. The code is described here .
Back to the top