{% extends "layout.html" %} {% block title %}Simulation Options{% endblock %} {% macro choice(id, title, options) %} {% endmacro %} {% macro textfield(id, title) %} {% endmacro %} {% macro datafieldbox(id, name, title) %}
{% endmacro %} {% block body %}

{% if 'forcefield' in session and session['forcefield'].startswith('amoeba') %} {{ choice('nonbondedMethod', 'Select how to compute long range nonbonded interactions.', [ ('NoCutoff', 'No cutoff', 'The system is not periodic, and no cutoff is applied to nonbonded interactions.'), ('PME', 'PME', 'Periodic boundary conditions are used. Long range interactions are computed with Particle Mesh Ewald.')]) }} {% else %} {{ choice('nonbondedMethod', 'Select how to compute long range nonbonded interactions.', [ ('NoCutoff', 'No cutoff', 'The system is not periodic, and no cutoff is applied to nonbonded interactions.'), ('CutoffNonPeriodic', 'Cutoff, non-periodic', 'The system is not periodic. Long range interactions are cut off with the reaction field method.'), ('CutoffPeriodic', 'Cutoff, periodic', 'Periodic boundary conditions are used. Long range interactions are cut off with the reaction field method.'), ('PME', 'PME', 'Periodic boundary conditions are used. Long range interactions are computed with Particle Mesh Ewald.')]) }} {% endif %}
{{ textfield('cutoff', 'Nonbonded interactions beyond this distance will be ignored.') }}
{{ textfield('ewaldTol', 'This determines the accuracy of interactions computed with PME.') }}
{{ choice('constraints', 'Select which bonds to replace with rigid constraints.', [ ('none', 'None', 'No degrees of freedom are constrained.'), ('water', 'Water only', 'Water molecules are kept rigid, but no other degrees of freedom are constrained.'), ('hbonds', 'Bonds involving hydrogen', 'The lengths of bonds involving a hydrogen atom are kept fixed. Water molecules are kept rigid.'), ('allbonds', 'All bonds', 'All bond lengths are kept fixed. Water molecules are kept rigid.')]) }}
{{ textfield('constraintTol', 'The maximum allowed relative error in constrained distance.') }}

{{ textfield('dt', 'The size of the time steps used by the integrator.') }}
{{ choice('ensemble', 'Select the statistical ensemble to simulate. This describes how the system interacts with the surrounding environment.', [ ('npt', 'Constant pressure, temperature', 'The simulation includes a thermostat and barostat to sample a constant pressure, constant temperature (NPT) ensemble.'), ('nvt', 'Constant volume, temperature', 'The simulation includes a thermostat so it samples a constant volume, constant temperature (NVT) ensemble.')]) }}
{{ textfield('temperature', 'The temperature at which the system is simulated.') }}
{{ textfield('friction', 'The friction coefficient coupling the system to the thermostat.') }}
{{ textfield('pressure', 'The pressure at which the system is simulated.') }}
{{ textfield('barostatInterval', 'The interval at which the barostat attempts to change the box volume, measured in time steps.') }}

{{ textfield('steps', 'The total length of the simulation, measured in time steps.') }}
{{ textfield('equilibrationSteps', 'The number of time steps of equilibration to run before starting the main simulation.') }}
{{ choice('platform', 'Select the platform to use. This must match the hardware you plan to run the simulation on.', [ ('Reference', 'Reference', 'The Reference platform is useful for testing, but not recommended for production simulations.'), ('CPU', 'CPU', 'Run the simulation on a conventional CPU'), ('CUDA', 'CUDA', 'Run the simulation on an NVIDIA GPU'), ('OpenCL', 'OpenCL', 'The OpenCL platform on various kinds of hardware, including NVIDIA, AMD, and Intel GPUs')]) }}
{{ choice('precision', 'Select the level of numerical precision to use.', [ ('single', 'Single', 'Most calculations are done in single precision. This is the fastest option.'), ('mixed', 'Mixed', 'Use a mix of single and double precision to give reasonably high performance, but better energy conservation than single precision. This is recommended for constant energy simulations.'), ('double', 'Double', 'All calculations are done in double precision. This can be very slow.')]) }}

{{ textfield('dcdFilename', 'The filename for the trajectory file.') }}
{{ textfield('dcdInterval', 'The interval at which to write frames to the trajectory, measured in time steps.') }}
{{ textfield('dataFilename', 'The filename for the log file.') }}
{{ textfield('dataInterval', 'The interval at which to write frames to the log file, measured in time steps.') }}
{{ datafieldbox('step', 'Step', 'The number of time steps completed.') }} {{ datafieldbox('time', 'Time', 'The amount of time simulated so far.') }} {{ datafieldbox('speed', 'Speed', 'The speed at which the simulation is running.') }} {{ datafieldbox('progress', 'Progress', 'The fraction of the simulation completed so far.') }} {{ datafieldbox('elapsedTime', 'Elapsed Time', 'The elapsed clock time so far.') }} {{ datafieldbox('remainingTime', 'Remaining Time', 'An estimate of the remaining clock time needed to complete the simulation.') }}
{{ datafieldbox('potentialEnergy', 'Potential Energy', 'The current potential energy of the system.') }} {{ datafieldbox('kineticEnergy', 'Kinetic Energy', 'The current kinetic energy of the system.') }} {{ datafieldbox('totalEnergy', 'Total Energy', 'The current total energy of the system.') }} {{ datafieldbox('temperature', 'Temperature', 'The instantaneous temperature of the system.') }} {{ datafieldbox('volume', 'Volume', 'The current volume of the periodic box.') }} {{ datafieldbox('density', 'Density', 'The current density of the system.') }}
{% if 'cleanup' in session and session['cleanup'] == 'yes' %} {% endif %}
{% endblock %}