JETSPIN: a specific-purpose open-source software for simulations of nanofiber electrospinning
We present the open-source computer program JETSPIN, specifically designed to simulate the electrospinning process of nanofibers. Its capabilities are shown with proper reference to the underlying model, as well as a description of the relevant input variables and associated test-case simulations. The various interactions included in the electrospinning model implemented in JETSPIN are discussed in detail. The code is designed to exploit different computational architectures, from single to parallel processor workstations. This paper provides an overview of JETSPIN, focusing primarily on its structure, parallel implementations, functionality, performance, and availability.
💡 Research Summary
The paper introduces JETSPIN, an open‑source, purpose‑built simulation package for electrospinning of polymer nanofibers. Electrospinning involves ejecting a charged polymer solution from a nozzle under a high electric field; the jet first stretches in a quasi‑steady straight segment and then undergoes a bending instability that dramatically lengthens the jet, producing fibers with high surface‑to‑volume ratios. Accurate numerical modeling of this process is essential for understanding the underlying physics and for optimizing experimental parameters such as voltage, tip‑collector distance, solution viscosity, and charge density.
JETSPIN implements a bead‑spring (discrete‑element) representation of the jet, extending the model originally proposed by Reneker et al. (2000). The filament is discretized into n beads, each carrying a mass mi and charge qi. Adjacent beads are linked by visco‑elastic Maxwell elements; the stress σi in the element obeys dσi/dt = G dl i/dt − G μ σi, where G is the elastic modulus and μ the viscosity. This stress generates a visco‑elastic force that pulls each bead toward its neighbours. Surface tension is modeled by a curvature‑dependent force that tends to restore a straight configuration. An external electric field is imposed as a static potential V0 between spinneret and collector; each bead experiences an electric force f_el,i = ei V0/h · x̂ (x̂ points from nozzle to collector). Long‑range Coulomb repulsion is calculated explicitly as f_c,i = ∑_{j≠i} qi qj Rij⁻² ûij, where Rij is the Euclidean distance between beads i and j. Gravity is also included but is negligible compared to the electrostatic forces. The total force on each bead follows Newton’s second law, and bead positions are updated via the kinematic relation dr i/dt = vi.
The code is written in free‑format Fortran 90 and consists of roughly 140 subroutines organized into logical modules. Core data (positions, velocities, stresses, masses, charges) are stored in the module nanojet_mod.f90, which also handles dynamic memory allocation because the number of beads changes during a simulation. Time integration is performed by driver_integrator in integrator_mod.f90; several schemes (Euler, Runge‑Kutta, Velocity‑Verlet) are available. The forces described above are computed in dedicated modules (coulomb_force_mod.f90, viscoelastic_force_mod.f90, etc.) and assembled in eom_mod.f90. Input parameters—material properties (G, μ, surface tension α), electrical settings (V0, distance h), initial bead count, time step, etc.—are parsed by io_mod.f90 and parse_mod.f90, allowing users to set up experiments without touching the source code. Output, including time‑averaged observables such as jet length, fiber diameter, charge distribution, is generated by statistic_mod.f90 and can be fully customized through the input file.
Parallel execution uses a Replicated Data (RD) strategy. All MPI processes hold a full copy of the global bead arrays; the computational load is divided by assigning each process a contiguous “chunk” of beads (set_chunk). During a time step each process updates only its own chunk, leaving the rest of the global arrays untouched. After the local updates, a global summation routine synchronizes the data across all processes. The MPI communication routines reside in version_mod.f90, while a serial version (serial_version_mod.f90) is provided for single‑processor runs. The authors note that communication overhead becomes dominant when fewer than about 50 beads per process are assigned, so parallel runs are recommended only for sufficiently large systems.
At present JETSPIN neglects aerodynamic drag, dynamic variation of the applied potential, and advanced electromagnetic wave propagation. The authors plan future extensions that incorporate Langevin‑type stochastic terms for air drag, self‑consistent calculation of the electric field (accounting for jet charge), and tree‑code algorithms for fast O(N log N) Coulomb force evaluation. Such enhancements will improve quantitative agreement with experiments and enable simulations of more complex setups (e.g., oscillating fields, multi‑nozzle arrays).
JETSPIN is distributed as a compressed tarball containing source code, example input files, and a makefile with targets for various UNIX workstations and parallel clusters. It can be compiled on any UNIX‑like system with a Fortran 90 compiler and MPI library; Windows users are advised to use the Cygwin environment. The package is fully open‑source, encouraging community contributions and further development.
In summary, JETSPIN provides a physically faithful, modular, and parallelizable platform for electrospinning simulations. It allows researchers to perform parameter sweeps, sensitivity analyses, and design optimizations efficiently, bridging the gap between experimental electrospinning and predictive computational modeling.
Comments & Academic Discussion
Loading comments...
Leave a Comment