digraph ls_scf_initial_guess { start [shape=ellipse, label="ls_scf_initial_guess()", width=1]; node [shape=box, width=3.5]; { rank=same; if_hist [shape=diamond, label="Has prev. DM?"]; do_aspc [label="Extrapolate DM with ASPC", width=4, URL="http://manual.cp2k.org/trunk/CP2K_INPUT/FORCE_EVAL/DFT/LS_SCF.html#list_EXTRAPOLATION_ORDER"]; if_hist -> do_aspc [label="yes", minlen=1.5]; } start -> if_hist; { rank=same; if_restart [shape=diamond, label="RESTART_READ?", URL="http://manual.cp2k.org/trunk/CP2K_INPUT/FORCE_EVAL/DFT/LS_SCF.html#list_RESTART_READ"]; do_restart [label="Read files LS_DM_SPIN_?_RESTART.dm", width=4]; if_restart -> do_restart [label="yes", minlen=1.5]; } if_hist -> if_restart [label="no", minlen=1]; { do_atomic_guess [label="CALL ls_scf_qs_atomic_guess()"]; if_restart -> do_atomic_guess [label="no", minlen=1]; do_mcweeny[label="CALL purify_mcweeny()", width=4]; do_restart -> do_mcweeny; do_aspc:e -> do_mcweeny:e[weight=0]; } { rank=same; if_trans [shape=diamond, label="TRANSPORT?", URL="http://manual.cp2k.org/trunk/CP2K_INPUT/FORCE_EVAL/DFT/QS.html#desc_TRANSPORT"]; do_trans [label="CALL transport_initialize()", width=4]; if_trans -> do_trans [label="yes", minlen=1.5]; } do_atomic_guess -> if_trans; do_mcweeny -> if_trans [weight=0]; return [shape=ellipse, label="RETURN", width=1]; if_trans -> return [label="no", minlen=1]; do_trans -> return [weight=0]; }