« home

DFT MLFF CFF Speed Accuracy Transfer

computational chemistrymaterials sciencedensity functional theorymachine learningforce fieldscetztikz

This spider diagram compares three computational chemistry methods: Classical Force Fields, Foundational ML Force Fields, and Density Functional Theory (DFT). The comparison is based on three key attributes:

  1. Accuracy: The precision and reliability of the method's predictions.
  2. Speed: The computational efficiency and time required for simulations.
  3. Generalizability: The ability to be applied across diverse chemical systems and material classes.

This diagram shows common trade-offs, highlighting how Foundational ML Force Fields aim to bridge the gap between the speed of classical methods and the accuracy of DFT, while offering improved generalizability over classical force fields.


DFT MLFF CFF Speed Accuracy Transfer

  Download

PNGPDFSVG

  Code

  LaTeX

dft-mlff-cff-speed-accuracy-transfer.tex (32 lines)

\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric,calc}

\begin{document}
\begin{tikzpicture}
  % Define named coordinates
  \coordinate (origin) at (0,0);
  \coordinate (acc) at (0,4);
  \coordinate (speed) at (-3.464,-2);
  \coordinate (transfer) at (3.464,-2);
  % Define the axes
  \draw[gray] (origin) -- (acc) (origin) -- (speed) (origin) -- (transfer);
  % Draw the triangles
  \foreach \r in {1,2,3,4}
  {
    \draw[dotted,gray,line width=0.9pt] (0,\r) -- (-0.866*\r,-0.5*\r) -- (0.866*\r,-0.5*\r) -- cycle;
  }
  % Label the axes
  \node[anchor=south] at (acc) {Accuracy};
  \node[anchor=north east] at (speed) {speed};
  \node[anchor=north west] at (transfer) {Transferability};
  % Plot the shapes
  \draw[red, thick, fill=red, opacity=0.2] (0,2) coordinate (CFFACC) -- (speed) -- (.87,-.5) -- cycle;
  \draw[blue, thick, fill=blue, opacity=0.2] (0,3) -- (-2.598,-1.5) -- (2.598,-1.5) -- cycle;
  \draw[green!80!black, thick, fill=green!80!black, opacity=0.2] (acc) -- (-0.866,-0.5) -- (transfer) -- cycle;
  % Add rotated legend labels inside the shapes
  \node[red, anchor=south, rotate=49] at ($(speed)!0.5!(CFFACC)$) {Classical Force Fields};
  \node[blue, anchor=south] at ($(speed)!0.5!(transfer)$) {Foundational ML Force Fields};
  \node[green!80!black, anchor=center] at ($(acc)!0.5!(transfer)$) [anchor=north, rotate=-60] {DFT};
\end{tikzpicture}
\end{document}

  Typst

dft-mlff-cff-speed-accuracy-transfer.typ (87 lines)

#import "@preview/cetz:0.3.2": canvas, draw

#set page(width: auto, height: auto, margin: 8pt)

#canvas({
  import draw: line, content, rotate

  // Define coordinates
  let acc = (0, 4)
  let speed = (-3.464, -2) // -2*sqrt(3), -2
  let transfer = (3.464, -2) // 2*sqrt(3), -2
  let origin = (0, 0)

  // Helper function to draw dotted triangles
  let draw-dotted-triangle(r) = {
    let x = 0.866 * r // sqrt(3)/2 * r
    let y = -0.5 * r
    line(
      (0, r),
      (-x, y),
      (x, y),
      (0, r),
      stroke: (dash: "dotted", paint: gray),
    )
  }

  // Draw gray axes
  line(origin, acc, stroke: gray)
  line(origin, speed, stroke: gray)
  line(origin, transfer, stroke: gray)

  // Draw dotted triangles
  for r in range(1, 5) {
    draw-dotted-triangle(r)
  }

  // Label axes
  content(acc, "Accuracy", anchor: "south")
  content(speed, "Speed", anchor: "north-east")
  content(transfer, "Transferability", anchor: "north-west")

  // Draw colored regions
  // Classical Force Fields (red)
  let cff-acc = (0, 2)
  let cff-color = rgb("#ff0000")
  line(
    cff-acc,
    speed,
    (0.87, -0.5),
    cff-acc,
    stroke: cff-color + .5pt,
    fill: cff-color.transparentize(90%),
  )
  // ML Force Fields (blue)
  let mlff-blue = rgb("#5a5adc")
  line(
    (0, 3),
    (-2.598, -1.5),
    (2.598, -1.5),
    (0, 3),
    stroke: mlff-blue + .5pt,
    fill: mlff-blue.transparentize(85%),
  )
  // DFT (green)
  let dft-green = rgb("#4c9900")
  line(
    acc,
    (-0.866, -0.5),
    transfer,
    acc,
    stroke: dft-green + .5pt,
    fill: dft-green.transparentize(80%),
  )

  // // Add rotated labels
  content(
    (-1.7, 0.4),
    text(fill: cff-color)[Classical Force Fields],
    angle: 48.5deg,
  )
  content(
    (0, -1.75),
    text(fill: mlff-blue)[Foundational ML Force Fields],
  )
  content((1.9, 1.2), text(fill: dft-green)[DFT], angle: -60deg)
})