A lightweight editor for Abaqus input files (.inp) that stays fast on multi‑GB models,
with a viewer for the output files .dat, .msg, .sta and .log.
Version 1.3 · Windows (x64)
Demo: https://youtu.be/LkoHPp08cP8?si=5fuDmXl4XcxFi0IL
Most of an .inp file is node/element tables that nobody edits by hand. InpLite memory‑maps the
file and scans it once (≈0.5 s per GB). Every long run of data lines stays on disk and appears
in the editor as a single blue placeholder line:
*Node
**@@BULK 1@@ *Node data: 10,096,807 lines, 491.2 MB
*Element, type=C3D8R
**@@BULK 2@@ *Element data: 8,640,000 lines, 667.8 MB
The editable text is only keyword lines, comments and small data blocks (a few hundred KB even for a 1 GB model). The line-number gutter shows the real file line numbers. On save, each placeholder is replaced by the original bytes, so untouched data is copied byte for byte.
The editor itself only highlights, lays out and paints the lines on screen, and its undo history stores the changed text rather than copies of the whole text, so typing and scrolling cost the same in a 100-line file and in a flat file with 130,000 keyword lines. Problem lists, outline and model checks are computed in the background.
Measured on a 1.16 GB model (10.1 M nodes, 8.6 M C3D8R elements):
| open (warm cache) | 0.45 s |
| private memory after open | < 1 MB (+60 MB after the background mesh check) |
| background mesh check (duplicate IDs, undefined nodes, connectivity) | 3–4 s |
| find node / element label | < 1 ms |
| save | 2 s, byte-identical round trip |
| keyword-aware compare of two 1.2 GB files | < 1 s after loading |
Flat 174 MB model with 58,000 keywords (130,000 editable lines): about 1 ms per frame, 4–6 ms per keystroke.
- Syntax colouring for keywords, parameters, values, comments,
<parameter>references and data. - Instant syntax errors (red) using a schema extracted from the Abaqus 2025 Keywords Guide
(600 keywords, 2,355 parameters): unknown keyword or parameter (with "did you mean"), missing
required parameter, mutually exclusive parameters used together, bad numbers in
*NODE/*ELEMENT, lines over 256 characters, unbalanced quotes. Parameter abbreviations that Abaqus accepts but the guide does not list (e.g.VAR=PRESELECTforVARIABLE=PRESELECT) are not errors: any unique prefix of at least 3 letters counts as the parameter. - Model checks (background):
*PART/*ASSEMBLY/*INSTANCE/*STEPpairing, model data inside a step, history data outside a step, undefined node sets / element sets / surfaces / materials / amplitudes / interactions (definitions inside*INCLUDEfiles are read too), undefined<parameters>, keywords not available in the detected product (Standard/Explicit), undocumented parameter values (warning), duplicate node/element labels, elements referencing undefined nodes, wrong number of element nodes. - Outline of parts, assembly/instances, materials, interaction properties and steps, with filter. Long lists (flat input files) are grouped by keyword, e.g. one expandable *Nset entry for 40,000 sets.
- New file (File → New, Ctrl+N) and dark mode (View → Dark mode).
- Comment out / uncomment (
**): select lines → right-click, or Ctrl+K / Ctrl+Shift+K (Ctrl+Q toggles); in the outline, right-click any entry (a part with its mesh, a step, several selected entries) → Comment out. Data blocks kept on disk are commented too (rewritten in the background), and a commented-out block shows up in the outline (grey,#) with Uncomment. Comment + uncomment gives back the file byte for byte. - Outline selection: drag over outline entries (or click, Shift+click) to select several;
right-click → Save selection as one *Include file…, Comment out.
*Part,*Assembly,*Instanceand*Stepstay paired with their*Endline: an opening keyword brings its*Endline along, an*Endline at the edge of the selection stays in the main file (the same applies to Save selection as *Include file in the editor). - Column (rectangular) selection: Alt+drag (or Alt+Shift+drag, Alt+Shift+arrows) like Notepad++; typing, Backspace/Delete, copy, cut and paste work on every line of the column.
- Ctrl + mouse wheel changes the font size (Ctrl+0: default).
- Abaqus output files (
.dat,.msg,.sta,.log): opened read-only in a viewer with errors (red), warnings (orange), notes, step headers, increments and cutbacks coloured; a summary (status, error/warning counts, last step/increment, total time, cutbacks, problem size, wallclock time) and a tree of steps → increments and of errors/warnings (identical messages grouped, e.g. "×1,240"); marks on the scroll bar; find (Ctrl+F) and go to line (Ctrl+G). - Monitor (eye button, like Notepad++'s Monitoring (tail -f)): the file is re-read every
0.5 s while Abaqus writes it and the view follows its end. A
.stafile of a running job is monitored right away. The file is never kept open, so Abaqus can append to it or replace it. *INCLUDEsplit: select any lines (several blocks are fine) → right-click → Save selection as *Include file…; or right-click a data block (the blue line in the editor, or the data viewer), a keyword line, or an outline entry → Save as *Include file…. The block (keyword line + data) is written to its own file in the background and replaced by an*Includeline. The file goes to the default include folder (Settings: folder of the input file, a sub-folder such asinclude, or a fixed folder); Browse… picks another one. Files in the input file's folder or below are referenced with a relative path (include/part.inp, works on Windows and Linux), others with the full path.- Tools → Save all part meshes (Part/Assembly input; for a flat input: the whole mesh), or
right-click a part → Save this part's mesh: choose one file (everything from the first to
the last
*Node/*Elementblock, so*NGEN,*NFILL,*SYSTEM, … keep their place), two files (*Node,*Element) or four files (*Node,*Element,*Nset,*Elset) per part. Parts where the order matters (*SYSTEM, node/element generation,*Nodeafter*Element) are always saved as one file, because separating them would change the model. - Tools → Save data blocks writes every keyword block with at least N data lines (N chosen in the dialog) into its own file.
- Grouped outline entries (e.g. *Element, 2,245 blocks) can be saved into one file or one file each.
- Batch saves show the list of files and a folder selector first; existing files are skipped
unless Overwrite is ticked. Ctrl+click an
*INCLUDEline opens the file; Inline include here (outline) does the reverse.
- Tools → Save all part meshes (Part/Assembly input; for a flat input: the whole mesh), or
right-click a part → Save this part's mesh: choose one file (everything from the first to
the last
- Name jump: Ctrl+click / F12 on a set, surface, material, amplitude, instance or
<parameter>jumps to its definition (also into include files). - Find references (Shift+F12 or right-click): with the cursor on such a name, the References
tab lists its definition and every place it is used (e.g. all
*Boundary,*Cloadlines and sections that use anelset); click an entry to jump there. - Go to (Ctrl+G): real line number, node label or element label. In Part/Assembly input the same label exists in several parts: Enter jumps to the first one, Enter again to the next part.
- Structure detection: the status bar shows Part / Assembly or Flat input; mesh export and Go to adapt to it.
- Data viewer for large blocks: virtual scrolling over millions of lines, aligned columns, go to label, right-click menu. The line index and label searches run in the background, so the window never freezes. Edit as text loads a block into the editor (up to 200,000 lines / 16 MB; for larger blocks a dialog explains why and offers Save as *Include file or the data viewer).
- Export without mesh: writes a small copy with node/element tables replaced by comments, handy for sending a model setup to someone.
- Compare side by side, like vimdiff or the Notepad++ Compare plugin: right-click a tab → Compare with → another open file or a file on disk (or File → Compare with file…). Changed lines are yellow with the changed characters highlighted, lines only in A red, only in B green; F7 / Shift+F7 (or Alt+Down / Alt+Up) jump between differences; Only differences folds the identical lines; Ignore blanks / Ignore case; double-click opens the file at that line. An open input file is compared with its current (unsaved) text, data blocks included. Output files can be compared too. Tools → Compare keyword blocks with file… is the keyword-aware compare (block by block, ignoring blanks, letter case and comments).
- Completion (automatic, or Ctrl+Space; accept with Enter, Tab or a double-click): keywords (adds the first required parameter), parameters of the current keyword, documented values, and names of sets/materials/etc. defined in the model.
- Model summary: counts of nodes/elements per type and part, sets, surfaces, materials, sections, interactions, steps and procedures (long lists wrap; the window scrolls).
- Safe save (in the background, with a progress dialog): the new file is written to a temporary file, flushed and size-checked, the
previous version is kept as
name.inp.bak, then the new file is moved into place. If the file was changed by another program since it was opened you are asked before overwriting. If data blocks were deleted from the text you are asked before they are dropped.
Not included on purpose: 3D mesh viewer, renumbering, keyword dialogs, reformatting. Non‑ASCII text (e.g. Korean comments) is not supported: it is not displayed properly, but the bytes are written back unchanged on save.
| Ctrl+N / Ctrl+O / Ctrl+S / Ctrl+Shift+S | new / open / save / save as |
| Ctrl+F | find in the editor text |
| Ctrl+G | go to line / node / element |
| Ctrl+click, F12 | go to definition, open *INCLUDE file, open data block |
| Shift+F12 | find references |
| Ctrl+Space | completion |
| Ctrl+Z / Ctrl+Y (Ctrl+Shift+Z) | undo / redo |
| Ctrl+A, Shift+arrows, Ctrl+arrows, double/triple click | select all / extend / word-wise / word / line |
| middle mouse button | autoscroll: hold and move (or click, move, click again to stop); Esc stops |
| Ctrl+K / Ctrl+Shift+K / Ctrl+Q | comment out / uncomment / toggle (**) the selected lines |
| Alt+drag, Alt+Shift+arrows | rectangular (column) selection |
| F7 / Shift+F7 | compare: next / previous difference |
| F5 | re-run checks |
| Ctrl+wheel, Ctrl + / Ctrl - / Ctrl+0 | font size / default size |
Windows 11 shows menu entries of classic (non-Store) programs only under Show more options (or Shift+right-click). InpLite also registers itself under Open with, which is in the short menu. The installer has an optional component Windows 11: always show the full right-click menu, which switches Explorer back to the Windows 10 style menu for your account (takes effect after signing out or restarting Explorer; undone by the uninstaller). A top-level entry in the new Windows 11 menu would need a signed MSIX package, which this draft does not have.
Tools → Settings: data-block threshold (default 2,000 lines; InpLite lowers it automatically
so the editable text stays around 10,000 lines), .bak backups, font size, dark mode, default
folder for *Include files. Every change applies immediately; a new threshold re-reads the open
files (unsaved changes are kept). Settings live in %APPDATA%\InpLite\settings.json
(Linux: ~/.config/InpLite/settings.json).
Run InpLite-<version>-setup.exe (no administrator rights). An installed version is removed
first (files, shortcuts, menu entries), so updating needs no separate uninstall; settings are kept.
The portable zip needs no installation.
InpLite is an independent, personal open-source project. It is not an official SIMULIA / Dassault Systèmes product; it is not developed, endorsed, supported or validated by Dassault Systèmes and has no relation to the company the developer works for. Abaqus, SIMULIA and Dassault Systèmes are trademarks of Dassault Systèmes or its subsidiaries. The software is provided "as is" (MIT License) and you use it at your own risk: check edited input files before running analyses and keep backups. Syntax checks may be incomplete; Abaqus (e.g. datacheck) is the reference. Please do not contact SIMULIA support about this tool. (Also shown under Information → Disclaimer.)
Developed by Youngbin LIM · built with Claude (Anthropic) GitHub · LinkedIn · ResearchGate
Link icons: GitHub and ResearchGate from Simple Icons (CC0 1.0);
LinkedIn from Font Awesome Free (CC BY 4.0), shown in grey.
tools/make_link_icons.py regenerates them.
Requirements: Rust 1.88 or newer.
cargo build --release
# -> target\release\inplite.exeInstaller (optional): install NSIS, copy the exe to
dist\inplite.exe, then
makensis installer\inplite.nsi
# -> dist\InpLite-1.2.0-setup.exebuild-windows-from-linux.sh shows how the released binaries were cross-compiled on Linux
(MinGW + -Zbuild-std).
InpLite-<version>-linux-x86_64.tar.gz runs on glibc 2.17+ (RHEL/CentOS 7 and newer, i.e. most
HPC clusters) and installs without root: ./install.sh (see linux/README-LINUX.txt). It is built
against glibc 2.17 with cargo-zigbuild:
pip install ziglang && cargo install cargo-zigbuild
cargo zigbuild --release --target x86_64-unknown-linux-gnu.2.17On Linux the file dialogs are built in (no GTK or zenity needed).
| file | |
|---|---|
load.rs |
memory-mapped scanner, skeleton text + bulk blocks |
store.rs |
mapped sources, bulk block store, placeholder format |
doc.rs |
document model, safe save, export without mesh, include writer |
syntax.rs |
lexer, highlighter, instant checks |
analysis.rs |
block structure, outline, definitions/references, model checks |
mesh.rs |
node/element index and mesh checks |
diff.rs, diffview.rs |
keyword-aware compare |
textdiff.rs |
side-by-side text compare |
logview.rs |
viewer for .dat / .msg / .sta / .log: classification, summary, monitoring |
lineview.rs |
read-only virtual line view (output files, compare panes) |
comment.rs |
comment out / uncomment, incl. data blocks on disk |
codeview.rs |
virtualised editor widget: input, selection, undo, visible-line layout, gutter |
editor.rs |
completion, hover, navigation, find, right-click menu |
outline.rs, viewer.rs, panels.rs, app.rs |
UI |
schema.rs |
keyword schema, element node counts |
shots.rs |
screenshot/self-test automation (feature shots, development only) |
Tests: cargo test (unit tests incl. byte-exact save round trips and include split/inline).