Enable/Disable Example

Location: examples/rappture2/enable/

This example demonstrates the <enable> attribute for conditionally showing or hiding inputs based on other input values.

tool.xml

<?xml version="1.0"?>
<run xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../rappture2web/contract.xsd">
<tool>
  <title>enable (rappture2web)</title>
  <about>Examples of Rappture &lt;enable&gt; attributes.

The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
  </about>
  <command>python3 @tool/enable.py @driver</command>
  <contract>
    <input>
      <choice id="model">
        <about>
          <label>Model</label>
          <description>Select the simulation model to use.</description>
        </about>
        <option>
          <about><label>Drift-Diffusion</label><description>Classical drift-diffusion transport model</description></about>
          <value>dd</value>
        </option>
        <option>
          <about><label>Boltzmann Transport Equation</label><description>Semi-classical Boltzmann transport equation model</description></about>
          <value>bte</value>
        </option>
        <option>
          <about><label>Quantum Mechanical NEGF</label><description>Quantum mechanical non-equilibrium Green's function model</description></about>
          <value>negf</value>
        </option>
        <default>Drift-Diffusion</default>
      </choice>
      <boolean id="recomb">
        <about>
          <label>Recombination Model</label>
          <description>Enable or disable the carrier recombination model.</description>
        </about>
        <default>off</default>
      </boolean>
      <number id="taun">
        <about>
          <label>Minority Carrier Lifetime for electrons</label>
          <description>Minority carrier lifetime for electrons used in the recombination model.</description>
        </about>
        <default>1e-6</default>
      </number>
      <number id="taup">
        <about>
          <label>Minority Carrier Lifetime for holes</label>
          <description>Minority carrier lifetime for holes used in the recombination model.</description>
        </about>
        <default>1e-6</default>
      </number>
      <number id="temp">
        <about>
          <label>Temperature</label>
          <description>Lattice temperature for the BTE simulation.</description>
        </about>
        <units>K</units>
        <default>300K</default>
      </number>
      <integer id="secret">
        <about>
          <label>Secret input number</label>
          <description>A hidden integer input used for internal purposes.</description>
        </about>
        <default>7</default>
      </integer>
      <number id="tbe">
        <about>
          <label>Tight-binding Energy</label>
          <description>Energy parameter for the tight-binding Hamiltonian in the NEGF model.</description>
        </about>
        <units>eV</units>
        <min>0eV</min>
        <max>10eV</max>
        <default>3.12eV</default>
      </number>
      <number id="tau">
        <about>
          <label>High-energy lifetime</label>
          <description>Lifetime for high-energy carriers above the tight-binding energy threshold.</description>
        </about>
        <units>ns</units>
        <min>0s</min>
        <max>1s</max>
        <default>10ns</default>
      </number>
    </input>
    <output>
      <log id="log"><about><label>Selected settings</label><description>Log summary of the enabled inputs and selected model.</description></about></log>
    </output>
  </contract>
</tool>
<input>
  <choice id="model">
    <about>
      <label>Model</label>
      <description>Select the simulation model to use.</description>
    </about>
    <option>
      <about><label>Drift-Diffusion</label><description>Classical drift-diffusion transport model</description></about>
      <value>dd</value>
    </option>
    <option>
      <about><label>Boltzmann Transport Equation</label><description>Semi-classical Boltzmann transport equation model</description></about>
      <value>bte</value>
    </option>
    <option>
      <about><label>Quantum Mechanical NEGF</label><description>Quantum mechanical non-equilibrium Green's function model</description></about>
      <value>negf</value>
    </option>
    <default>Drift-Diffusion</default>
  </choice>

  <group id="dd">
    <about>
      <label>Drift-Diffusion Options</label>
      <enable>input.choice(model) == "dd"</enable>
    </about>
    <boolean id="recomb">
      <about>
        <label>Recombination Model</label>
        <description>Enable or disable the carrier recombination model.</description>
      </about>
      <default>off</default>
    </boolean>
    <number id="taun">
      <about>
        <label>Minority Carrier Lifetime for electrons</label>
        <description>Minority carrier lifetime for electrons used in the recombination model.</description>
        <enable>input.group(dd).boolean(recomb)</enable>
      </about>
      <default>1e-6</default>
    </number>
    <number id="taup">
      <about>
        <label>Minority Carrier Lifetime for holes</label>
        <description>Minority carrier lifetime for holes used in the recombination model.</description>
        <enable>input.group(dd).boolean(recomb)</enable>
      </about>
      <default>1e-6</default>
    </number>
  </group>

  <group id="bte">
    <about>
      <label>Boltzmann Transport Equation Options</label>
      <enable>input.choice(model) == "bte"</enable>
    </about>
    <number id="temp">
      <about>
        <label>Temperature</label>
        <description>Lattice temperature for the BTE simulation.</description>
      </about>
      <units>K</units>
      <preset>
        <value>300K</value>
        <label>300K (room temperature)</label>
      </preset>
      <preset>
        <value>77K</value>
        <label>77K (liquid nitrogen)</label>
      </preset>
      <default>300K</default>
    </number>
    <integer id="secret">
      <about>
        <label>Secret input number</label>
        <description>A hidden integer input used for internal purposes.</description>
        <enable>no</enable>
      </about>
      <default>7</default>
    </integer>
  </group>

  <group id="negf">
    <about>
      <label>Quantum Mechanical Options</label>
      <enable>input.choice(model) == "negf"</enable>
    </about>
    <number id="tbe">
      <about>
        <label>Tight-binding Energy</label>
        <description>Energy parameter for the tight-binding Hamiltonian in the NEGF model.</description>
      </about>
      <units>eV</units>
      <min>0eV</min>
      <max>10eV</max>
      <default>3.12eV</default>
    </number>
    <number id="tau">
      <about>
        <label>High-energy lifetime</label>
        <description>Lifetime for high-energy carriers above the tight-binding energy threshold.</description>
        <enable>input.(negf).(tbe):eV &gt;= 3</enable>
      </about>
      <units>ns</units>
      <min>0s</min>
      <max>1s</max>
      <default>10ns</default>
    </number>
  </group>
</input>
</run>

Enable expression syntax

Expression

Meaning

input.choice(model) == "dd"

Exact value match

input.group(dd).boolean(recomb)

Boolean is true/on

input.(negf).(tbe):eV >= 3

Numeric comparison with unit

no

Always disabled/hidden

Running

rappture2web examples/rappture2/enable/