Code Monkey home page Code Monkey logo

dev-lichem's People

Contributors

emleddin avatar g-andres avatar markahix avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

dev-lichem's Issues

Add final energy listing to DFP log

At the end of the DFP log, you only get the final QM/MM energy.

 | Opt. step: 4 | Energy: -1234.5678910111 a.u.  | RMS dev: 0.012345 Å
    QMMM relaxation satisfactory.

Optimization complete.

################# Usage Statistics #################
  Total wall time:                     39.369 hours
  Wall time for QM Wrappers:           36.246 hours
  Wall time for MM Wrappers:           3.0722 hours
  Wall time for LICHEM:                0.0505 hours
####################################################


Done.

The end of an SP log, however, prints this information and also gives it in kcal/mol:

  QM energy: -1000.000000111 a.u.
  MM energy: -234.5678909000 a.u.
  QMMM energy: -1234.5678910111 a.u. | -774703.6972884 kcal

################# Usage Statistics #################
  Total wall time:                     1.0641 hours
  Wall time for QM Wrappers:           1.0347 hours
  Wall time for MM Wrappers:           0.0291 hours
  Wall time for LICHEM:                0.0002 hours
####################################################


Done.

It'd be helpful to have a final printout with the breakdown into QM and MM in the LICHEM log from DFP.

Ex:

 | Opt. step: 4 | Energy: -1234.5678910111 a.u.  | RMS dev: 0.012345 Å
    QMMM relaxation satisfactory.

Optimization complete.

Final optimization step:
  QM energy: -1000.000000111 a.u.
  MM energy: -234.5678909000 a.u.
  QMMM energy: -1234.5678910111 a.u. | -774703.6972884 kcal

################# Usage Statistics #################
  Total wall time:                     39.369 hours
  Wall time for QM Wrappers:           36.246 hours
  Wall time for MM Wrappers:           3.0722 hours
  Wall time for LICHEM:                0.0505 hours
####################################################


Done.

Build checks for error terminations from external calls

When receiving results from any external program call, we need to check if the external program encountered a fatal error before using the results to continue.

For example, in a DFP calculation, Tinker returns an error which is interpreted as some absurd amount of positive energy (in the trillions of eVs or higher). Rather than letting LiCHEM continue on and spend more cycles, the whole lichem job should come to a stop. This is especially important when we want LiCHEM to be used on HPCs, as wasted allocations are never ideal.

Checks should include looking for "Normal Termination" or "Error termination" in the Gaussian outputs, and "Unable to Continue" from the TINKER outputs, to name a few.

Support XYZ comment

A traditional XYZ allows users to have a comment line between the natom and coordinates. An SP or DFP optimization will fail with this line in there.

Currently fails (what to support):

86000
generated from VMD
       N    18.93700   14.21400  -10.50300

Currently Works:

86000

       N    18.93700   14.21400  -10.50300

Add flag for TINKER keyfile

As of right now, TINKER.cpp is hardcoded to pull a file labeled tinker.key when using TINKER.

  //Open generic key file
  inFile.open("tinker.key",ios_base::in);
  if (!inFile.good())
  {
    //Exit if files do not exist
    logFile << "Error: Missing tinker.key file.";
    logFile << '\n';
    logFile.flush();
    exit(0);
  }

There should be a command flag to specify the key file input name, and if none given, use tinker.key by default. This way users who need to keep things explicitly labeled, instead of using confusing generics, can do so.

So, something like:

## -n number of processors
## -x input xyz
## -c connectivity file
## -r regions file
## -k tinker key file
## -o output xyz file
## -l output log file
lichem -n 20 -x xyzfile.xyz -c connect.inp -r regions.inp -k system.key -o out.xyz -l lichem.log

Reconfigure GitHub

Tasks:

  • Change master branch to literally anything else (ex: deployment, base, project, main)
  • Add in a workflow to trigger a GitHub action that builds the LaTeX documentation for the manual (so it's hosted online and pulls in new commits, as opposed to requiring people to compile the LaTeX themselves)

Expand -h flag

Currently, lichem -h writes the following to a file titled LICHEM.err:

Usage: lichem -n Ncpus -x Input.xyz -c Connectivity.inp -r Regions.inp -o Output.xyz

Command line arguments:

  -n    Number of CPUs used for the QM calculation.

  -x    Input xyz file.

  -c    Connectivity and force field input file.

  -r    Information about how the system is subdivided
        into QM, MM, and pseudo-atom regions.

  -o    Output xyz file for the optimized structures.

Nothing prints to the Terminal, so if you don't know to look for that file, it looks like there's no help.

Additionally, this -h or --help option does not explain any of the conversion tools, which is where a lot of errors arise.

Basically, expand the -h information to include all lichem options, and consider printing an alert to the Terminal that the info is in LICHEM.err (since conversion is typical interactive).

This appears to be in src/input_reader.cpp

logFile << "Error occured due to the missing/wrong arguments.\n";

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.