1. Install

ddsdde is available for Windows 10 and Windows 11, on x64 hardware. macOS and Linux versions are not yet available.

Do the steps that follow.

  1. Download the installer from Gumroad.
  2. Run the installer.
  3. If Windows shows a SmartScreen message, click More info. Then click Run anyway.

The installer is not signed with a code-signing certificate. This is the cause of the SmartScreen message. A certificate costs money that this beta does not have.

ddsdde does not need an Abaqus licence. It does not need a Fortran compiler. It does not send your source code to a server.

2. Start

Do the steps that follow to see the inspector work.

  1. Start ddsdde.
  2. Press Ctrl+O.
  3. Select a Fortran file. Use a .f, .for, .f90 or .f95 file.
  4. Move the cursor onto an argument in the SUBROUTINE UMAT(...) line.
  5. Read the panel on the right.

If you have no subroutine file, press Ctrl+Shift+P and select New UMAT from Template. This gives you a complete subroutine that you can read immediately.

3. The inspector

The inspector is the panel on the right of the window. It reads the file, finds each SUBROUTINE statement, and identifies the type. It then shows the arguments of the subroutine at the cursor.

The three facts

For each argument the inspector gives this information.

FieldContent
Description The physical quantity, in plain words.
Units The dimension of the quantity. Abaqus has no unit system. You must keep the units consistent.
Access READ, WRITE or READ/WRITE. READ means Abaqus supplies the value. WRITE means you must calculate it.

Access direction

The access direction is the most important field. If you write to a READ argument, Abaqus ignores the value. If you do not write to a WRITE argument, Abaqus uses whatever was in memory.

In both cases the subroutine compiles. In both cases the analysis runs. The results are incorrect.

Files with more than one subroutine

A Fortran file can contain more than one subroutine. The inspector shows a tab for each subroutine that it finds. The active tab follows the cursor. To hold one tab, click it.

Search

Use the search box at the top of the inspector to filter the argument list. The search examines the argument name and the description.

4. The editor

ddsdde uses Monaco. Monaco is the editor component of Visual Studio Code. Most Visual Studio Code key bindings operate as you expect.

Fixed form and free form

The editor reads the file extension to find the source form.

ExtensionFormRulers
.f .for .f77Fixedcolumn 6, column 72
.f90 .f95Freenone

In fixed form, columns 1 to 5 hold the statement label. Column 6 holds the continuation character. Statements start at column 7 and end at column 72. The rulers show these limits.

Highlighting

The editor gives Abaqus subroutine names and known argument names a separate colour. Your own variables keep the default colour. You can thus see which names come from the Abaqus interface.

Hover

Hold the pointer above an argument name to see a short description. This gives the same data as the inspector, at the pointer.

Split view

You can divide the editor into two panes. Use a split to compare two subroutines, or to keep a template beside the file that you write.

  • Press Ctrl+\ to split to the right. The two panes are then side by side.
  • Press Ctrl+Shift+\ to split down. The two panes are then one above the other.
  • Press Ctrl+W to close the split.

The two buttons at the right of the tab strip do the same thing. Drag the divider between the panes to change their size.

The focused pane

One pane has the focus. A blue mark on its tab strip shows which one. Click in a pane to give it the focus, or press Ctrl+K to move the focus to the other pane.

The inspector, the status bar, Ctrl+O and Ctrl+S all apply to the focused pane. The argument list on the right thus always agrees with the file that you edit.

Put a file in the second pane

A new pane is empty. To fill it, do one of these three things.

  • Press Ctrl+Shift+P and select Move File to Other Pane. This puts the current file in the other pane. Use it to look at two parts of one long subroutine.
  • Click a file in the file explorer.
  • Press Ctrl+O and select a file.

Each pane keeps its own list of open files. A file can be open in both panes at the same time.

Completion

Inline completion needs an Anthropic API key. To add a key, press Ctrl+Shift+P and select Anthropic API Key. The key stays on your computer. If you add no key, every other function continues to operate.

5. The reference

Click Abaqus Docs at the right of the top bar, or press Ctrl+Shift+D. A window opens above the editor. Click the expand control in its title bar to make it fill the screen. Press Esc to close it.

The window holds a page for each of the 20 subroutine types and a page for each of their 346 arguments. It also holds pages for the Fortran intrinsic functions that occur most in subroutine code.

Two views of each subroutine

Each subroutine has two kinds of page. Full reference is one long document that covers the whole routine: when Abaqus calls it, the component ordering, the finite-strain rules, the common mistakes, and every argument grouped by access direction. The argument pages below it cover one variable each.

Use the full reference when you learn a subroutine. Use the argument pages when you write code and need one fact.

The section order follows the Abaqus User Subroutines Reference Guide, so each topic is where you expect it. The text is written by the ddsdde project.

Shift+Click an argument

Hold Shift and click an argument name in the editor. The window opens at the page for that argument. This is the fastest route from code to documentation.

The subroutine at the clicked line selects the correct page. If you Shift+Click PROPS in a VUMAT, you get the VUMAT page, not the UMAT page.

A word that is not a known argument does nothing. Shift+Click on your own variables is thus safe.

Search

The search box is at the top of the window. Press Ctrl+F to move the cursor to it. The search examines every page. Type an argument name to go straight to it, or type a phrase such as yield stress to find the pages that discuss it.

Contents

The tree on the left lists the subroutine types. Click a type to expand it and to see its arguments. The tree opens the type that contains the page you read.

Follow cursor

Click Follow cursor in the title bar to turn on this mode. The window then shows the argument at your cursor in the editor, and it changes as you move. Use this mode when you read an unfamiliar subroutine. Turn it off to read a page while you type.

Cross-links

Argument names in the text are links. Click a name to go to its page. Use the back control in the title bar to return.

What this reference is not

This reference is written by the ddsdde project. It is not a copy of the Abaqus manual, and it does not replace it. The Abaqus documentation is copyright Dassault Systemes, and ddsdde does not redistribute it. Each subroutine page has a link that opens the official manual in your browser.

6. Commands

The top bar has no buttons. Press Ctrl+Shift+P to open the command palette. The palette lists every command with its shortcut.

Press Ctrl+P to go to a file. This dialog lists your open editors first, then your recent files. It matches on any part of the name, so elum finds elastic_umat.f. Type > to change to the command palette.

The shortcuts follow Visual Studio Code. If you come from Visual Studio Code, your key bindings operate as you expect. The editing shortcuts are supplied by Monaco, which is the Visual Studio Code editor component.

CommandShortcut
Command paletteCtrl+Shift+P
Go to fileCtrl+P
Open Abaqus DocsCtrl+Shift+D
FILE
New fileCtrl+N
Open fileCtrl+O
Open folderCtrl+K O
SaveCtrl+S
Save asCtrl+Shift+S
Save allCtrl+K S
Close editorCtrl+W
Next editorCtrl+Tab
Previous editorCtrl+Shift+Tab
LAYOUT
Toggle file explorerCtrl+B
Split editor rightCtrl+\
Split editor downCtrl+Shift+\
Close splitCtrl+K W
Focus first paneAlt+1
Focus second paneAlt+2
EDITING
FindCtrl+F
ReplaceCtrl+H
Go to lineCtrl+G
Toggle commentCtrl+/
Add cursor at next matchCtrl+D
Move line up or downAlt+Up / Alt+Down
Rename symbolF2
Undo / redoCtrl+Z / Ctrl+Y
Open docs for argumentShift+Click
VIEW
SettingsCtrl+,
Increase font sizeCtrl+=
Decrease font sizeCtrl+-
Reset font sizeCtrl+0

7. Templates

A template is a complete subroutine that compiles. Use a template as a start point, or as an example to read.

To insert a template, press Ctrl+Shift+P and select New UMAT from Template.

ddsdde supplies 14 templates. Six of them are UMAT.

TemplateModel
UMATLinear elastic
UMATJ2 plasticity
UMATDrucker-Prager
UMATNeo-Hookean
UMATGTN damage
UMATViscoelastic, Prony series
VUMATExplicit material
UEL4-node quadrilateral
UMATHTHeat transfer
UHARDHardening law
CREEPCreep law
USDFLDField variables
DLOADDistributed load
UEXTERNALDBExternal database

A template is an example. Read it before you use it. Do not put a template into production work without a check.

8. Settings

Press Ctrl+, to open the settings. ddsdde keeps the settings on your computer between sessions.

  • Theme — 22 themes, dark and light. You can also change the theme from the command palette.
  • Font size — 8 to 36 points.
  • Word wrap — on or off.
  • Minimap — on or off.

The settings dialog also shows a compiler path and compiler flags. These two fields have no effect in this release. They stay for the build function, which is not available now. Refer to section 9.

9. Limits

This release does one job: it helps you write a subroutine. It does not compile, test or run anything.

These functions are not in this release.

  • Compilation of a subroutine to a .dll or .so
  • Physics tests at a material point
  • Comparison against Abaqus native materials
  • Benchmark suites and verification reports
  • Abaqus job control
  • Analysis of .msg, .sta and .inp files
  • The STATEV manager and the interface checker
  • The unit checker and the hardening-curve tool

These functions were in an earlier release. They are removed from the program, but they are not deleted from the source. The plan is to return them one at a time, after UMAT support is correct.

Argument data

The argument data covers 20 subroutine types. Every argument has a description, a unit and an access direction. UMAT has the most detail, because UMAT is the primary target of this release.

10. Problems

The inspector shows nothing

The inspector needs a SUBROUTINE statement. Make sure of these three conditions.

  • The file contains a SUBROUTINE statement.
  • The subroutine name is one of the 19 known types.
  • The cursor is inside the subroutine.

The columns are in the wrong place

The editor selects the source form from the file extension. A free-form file with a .f extension gets fixed-form rulers. Change the extension to .f90.

Completion does not operate

Inline completion needs an Anthropic API key and a network connection. Press Ctrl+Shift+P and select Anthropic API Key to check the key.

Report a defect

Send a message to flm2127@columbia.edu. Include the version, the steps that cause the defect, and the file if you can share it.