Package: hilde
InstallationExternal dependencies:apt-get install gfortran liblapack-dev liblapacke-dev mongodbInstall the python requirements inrequirements.txtin order:cat requirements.txt | xargs -n 1 -L 1 pip install --userConfigure Hilde by creating a~/.hildercconfiguration file in the home directory:cp hilde/location/hilderc.template ~/.hildercand edit according to system. Theaims_commandis a command or script that takes care
of running aims. This can be either justmpirun aims.x, or a script loading necessary
modules etc. and finally callingsrun aims.xon a cluster.Install Hilde:pip install --user -U .Alternatively, you can create and activate a virtual environment holding the
Hilde installation and all dependencies like this:python3 -m venv venv
source venv/bin/activate
cat requirements.txt | xargs -n 1 -L 1 pip install
pip install .Settings Fileshildeuses the Pythonconfigparsermodule for parsing settings files namedsettings.inand the configuration filehilde.cfg. The
parser is augmented byJSONso it understands any input on the right hand side that is
validJSON. The inputs get converted to Python objects according tothis conversion
table.New FeaturesSimplified Settings Files:Settings files namedsettings.inare automatically parsed when callingSettings()within Hilde.The configuration filehilde.cfggets installed to system.Molecular dynamics workflow with input and output filessee hilde/examples/mdPhonopy workflow with input and output filessee hilde/examples/phonopyRelaxation workflow with config file and output filessee hilde/examples/relaxationYAML Trajectories:save MD trajectories as YAML with tools inhilde.trajectoriesexample inhilde/examples/trajectory/trajectory.son.ipynbEmails:send notifications via email withhilde.helpers.notifications.send_simple_mailWatchdogs:supervise e.g. an MD to estimate when the walltime will be reached.
Example inexamples/md/md_with_watchdog.ipynbWrapper forphono3pyPreprocess and re-creation of Phono3py objects from precomputed force
constants, see examplesWrapper forphonopyPreprocess and (some) postprocess, see examplesTemplatesfrom hilde.templates.lammps import setup_lammps_sito provide lammps calculatorBrillouin zone helpershilde.helpers.brillouinzonefeaturesget_paths,get_bands, andget_labelsto provide paths in the BZ that can be fed tophonopyviaphonon.set_bandstructure(bands), andphonon.plot_band_structure(labels=labels).These functions are used byhilde.phonopy.plot_dos_and_bandstructureto
plot DOS and bandstructure in the working directory.Scripts:make_supercell: create supercell from supercell matrix or
target targetgeometry_info: print geometry information for given input
structureSymmetry Block Generation FunctionsAtomsInput: A storage class that stores relevant information about a structurewrite_sym_constraints_geo: Read any geometry.in file and use the list ofAtomInputsto create a new supercell with a user defined symmetry block added to itFireWorks integrationFunctions that can be used with PyTask to use FireWorks as a job managerJobs can now be submitted to the queue from a local machine and have the results processed locallySetup of FireWorks on Computational ResourcesSee also:doc/README_FHI_FireWorksConnections.mdOverview of Managing FireWorks RemotelyFireWorks does not copy functions but only finds them in the PYTHONPATHTo pass it functions give it the function_module.function_name as a strFunctions that are run on the local machineAll functions/files that set up FireWorksAll scripts that initially call hilde.tasks.fireworks.generate_firework.cfg Files that define the steps (if used)All functions used by a Fireworks without a task that calls a function in task2queue listclaunch_hilde and associated functionsFunction that are run on the remote machineAll functions used by a Firework with a task that calls a function in task2queueqluanch_hilde and associated functionsFunctions that can run on both machinesAll FireWorks API functionsAll database accessors functionsSpec modifying functions (hilde.tasks.fireworks.fw_action_outs)hilde.tasks.fireworks.generate_fireworkMachine specific settings such as the aims_command is handled dynamicallyIt automatically changes when called on a machineCan always use local settings without an issuePrerequisites for using FireWorksFabric 2 (for remote connections)paramiko (used by Fabric 2)python-gssapi (for gss authorization)pymongoUsing FireWorks on the clustersDownload/clone fromhttps://github.com/materialsproject/fireworks.gitand move the FireWorks directoryModify fw_tutorials/worker/my_fworker.yaml and copy it to $HOME/.fireworksProbably do not need to do any modifications if running on similar environmentsUseful if you want to run specific jobs on specific machines without specified reservationsModify fw_tutorials/worker/my_launchpad.yaml and copy it to $HOME/.fireworkshost: Host to the DB serverIf connected through an ssh tunnel use localhostport: Port the DB server is listening onIf connected through an ssh tunnel use the port connected the DB server via the tunnelusername: username used to access the databasepassword: password used to access the databaselogdir: default directory to store logsstrm_lvl: How much information the launchpad prints by defaultModify the correct fw_tutorials/queue_???.yaml file for your submission system and copy it to $HOME/.fireworks/my_qadapter.yamlOnly used on clustersSet to minimal queue defaultsnodes = 1ntasks_per_node = 32walltime = "00:30:00"queue = "express"logdir = /some/path/that/must/exist (make sure this exists)Find the FireWorks install directory with lpad version and modify
$FW_INSTALL_DIR/fireworks/fw_config.py:LAUNCHPAD_LOC: $HOME/.fireworks/my_launchpad.yamlFWORKER_LOC: $HOME/.fireworks/my_fworker.yamlQUEUEADAPTER_LOC: $HOME/.fireworks/my_qadapter.yamlSetup a MongoDB database for fireworksBest to have it always accessible by all machines that need itCheck with the cluster management on what solution they'd preferConnections between computersPasswordless connections are preferredIf this is not possible you can pass the password as a command line argument, (delete
bash history afterwards)FireWorks EtiquetteName all Fireworks/WorkFlowsIf you are using a shared launchpad only use lpad reset if everyone is okay with that