diff options
Diffstat (limited to 'MultiSource/Benchmarks/DOE-ProxyApps-C/CoMD/mycommand.c')
-rw-r--r-- | MultiSource/Benchmarks/DOE-ProxyApps-C/CoMD/mycommand.c | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/MultiSource/Benchmarks/DOE-ProxyApps-C/CoMD/mycommand.c b/MultiSource/Benchmarks/DOE-ProxyApps-C/CoMD/mycommand.c deleted file mode 100644 index 11cfc264..00000000 --- a/MultiSource/Benchmarks/DOE-ProxyApps-C/CoMD/mycommand.c +++ /dev/null @@ -1,290 +0,0 @@ -/// \file -/// Handle command line arguments. - -#include "mycommand.h" - -#include <string.h> -#include <stdlib.h> - -#include "cmdLineParser.h" -#include "parallel.h" -#include "mytype.h" - -/// \page pg_running_comd Running CoMD -/// -/// \section sec_command_line_options Command Line Options -/// -/// CoMD accepts a number of command line options to set the parameters -/// of the simulation. Every option has both a long form and a short -/// form. The long and short form of the arguments are entirely -/// interchangeable and may be mixed. All the arguments are independent -/// with the exception of the \--potDir, \--potName, and \--potType, -/// (short forms -d, -n, and -t) arguments which are only relevant when -/// used in conjunction with \--doeam, (-e). -/// -/// Supported options are: -/// -/// | Long Form | Short Form | Default Value | Description -/// | :------------ | :---------: | :-----------: | :---------- -/// | \--help | -h | N/A | print this message -/// | \--potDir | -d | pots | potential directory -/// | \--potName | -p | Cu_u6.eam | potential name -/// | \--potType | -t | funcfl | potential type (funcfl or setfl) -/// | \--doeam | -e | N/A | compute eam potentials (default is LJ) -/// | \--nx | -x | 20 | number of unit cells in x -/// | \--ny | -y | 20 | number of unit cells in y -/// | \--nz | -z | 20 | number of unit cells in z -/// | \--xproc | -i | 1 | number of ranks in x direction -/// | \--yproc | -j | 1 | number of ranks in y direction -/// | \--zproc | -k | 1 | number of ranks in z direction -/// | \--nSteps | -N | 100 | total number of time steps -/// | \--printRate | -n | 10 | number of steps between output -/// | \--dt | -D | 1 | time step (in fs) -/// | \--lat | -l | -1 | lattice parameter (Angstroms) -/// | \--temp | -T | 600 | initial temperature (K) -/// | \--delta | -r | 0 | initial delta (Angstroms) -/// -/// Notes: -/// -/// The negative value for the lattice parameter (such as the default -/// value, -1) is interpreted as a flag to indicate that the lattice -/// parameter should be set from the potential. All supplied potentials -/// are for copper and have a lattice constant of 3.615 -/// Angstroms. Setting the lattice parameter to any positive value will -/// override the values provided in the potential files. -/// -/// The default potential name for the funcfl potential type is -/// Cu_u6.eam (Adams potential). For the setfl type the default -/// potential name is Cu01.eam.alloy (Mishin potential). Although these -/// will yield similar dynamics, the table have a very different number -/// of entries (500 vs. 10,000 points, respectively) This may give very -/// different performance, depending on the hardware. -/// -/// The default temperature is 600K. However, when using a perfect -/// lattice the system will rapidly cool to 300K due to equipartition of -/// energy. -/// -/// -/// \subsection ssec_example_command_lines Examples -/// -/// All of the examples below assume: -/// - The current working directory contains a copy of the pots dir (or -/// a link to it). -/// - The CoMD bin directory is located in ../bin -/// -/// Running in the examples directory will satisfy these requirements. -/// -/// ------------------------------ -/// -/// The canonical base simulation, is -/// -/// $ mpirun -np 1 ../bin/CoMD-mpi -/// -/// Or, if the code was built without MPI: -/// -/// $ ../bin/CoMD-serial -/// -/// ------------------------------ -/// -/// \subsubsection cmd_examples_potential Changing Potentials -/// -/// To run with the default (Adams) EAM potential, specify -e: -/// -/// $ ../bin/CoMD-mpi -e -/// -/// ------------------------------ -/// -/// To run using the Mishin EAM potential contained in the setfl file -/// Cu01.eam.alloy. This potential uses much larger tables (10,000 -/// entries vs. 500 for the Adams potential). -/// -/// $ ../bin/CoMD-mpi -e -t setfl -/// -/// ------------------------------ -/// -/// Selecting the name of a setfl file without setting the appropriate -/// potential type -/// -/// $ ../bin/CoMD-mpi -e -p Cu01.eam.alloy -/// -/// will result in an error message: -/// -/// Only FCC Lattice type supported, not . Fatal Error. -/// -/// Instead use: -/// -/// $ ../bin/CoMD-mpi -e -t setfl -p Cu01.eam.alloy -/// -/// ------------------------------ -/// -/// \subsubsection cmd_example_struct Initial Structure Modifications -/// -/// To change the lattice constant and run with an expanded or -/// compressed lattice: -/// -/// $ ../bin/CoMD-mpi -l 3.5 -/// -/// This can be useful to test that the potential is being correctly -/// evaluated as a function of interatomic spacing (the cold -/// curve). However, due to the high degree of symmetry of a perfect -/// lattice, this type of test is unlikely to detect errors in the force -/// computation. -/// -/// ------------------------------ -/// -/// Initialize with zero temperature (zero instantaneous particle -/// velocity) but with a random displacements of the atoms (in this -/// case the maximum displacement is 0.1 Angstrom along each axis). -/// -/// $ ../bin/CoMD-mpi --delta 0.1 -T 0 -/// -/// Typical values of delta are in the range of 0.1 to 0.5 Angstroms. -/// Larger values of delta correspond to higher initial potential energy -/// which in turn produce higer temperatures as the structure -/// equilibrates. -/// -/// ------------------------------ -/// -/// -/// \subsubsection cmd_examples_scaling Scaling Examples -/// -/// Simple shell scripts that demonstrate weak and strong scaling -/// studies are provided in the examples directory. -/// -/// ------------------------------ -/// -/// Run the default global simulation size (32,000 atoms) distributed -/// over 8 cubic subdomains, an example of strong scaling. If the -/// number of processors does not equal (i*j*k) the run will abort. -/// Notice that spaces are optional between short form options and their -/// arguments. -/// -/// $ mpirun -np 8 ../bin/CoMD-mpi -i2 -j2 -k2 -/// -/// ------------------------------ -/// -/// Run a weak scaling example: the simulation is doubled in each -/// dimension from the default 20 x 20 x 20 and the number of subdomains -/// in each direction is also doubled. -/// -/// $ mpirun -np 8 ../bin/CoMD-mpi -i2 -j2 -k2 -x 40 -y 40 -z 40 -/// -/// ------------------------------ -/// -/// The same weak scaling run, but for 10,000 timesteps, with output -/// only every 100 steps. -/// -/// $ mpirun -np 8 ../bin/CoMD-mpi -i2 -j2 -k2 -x 40 -y 40 -z 40 -N 10000 -n 100 -/// - -/// \details Initialize a Command structure with default values, then -/// parse any command line arguments that were supplied to overwrite -/// defaults. -/// -/// \param [in] argc the number of command line arguments -/// \param [in] argv the command line arguments array -Command parseCommandLine(int argc, char** argv) -{ - Command cmd; - - memset(cmd.potDir, 0, 1024); - memset(cmd.potName, 0, 1024); - memset(cmd.potType, 0, 1024); - strcpy(cmd.potDir, "pots"); - strcpy(cmd.potName, "\0"); // default depends on potType - strcpy(cmd.potType, "funcfl"); - cmd.doeam = 0; - cmd.nx = 20; - cmd.ny = 20; - cmd.nz = 20; - cmd.xproc = 1; - cmd.yproc = 1; - cmd.zproc = 1; - cmd.nSteps = 100; - cmd.printRate = 10; - cmd.dt = 1.0; - cmd.lat = -1.0; - cmd.temperature = 600.0; - cmd.initialDelta = 0.0; - - int help=0; - // add arguments for processing. Please update the html documentation too! - addArg("help", 'h', 0, 'i', &(help), 0, "print this message"); - addArg("potDir", 'd', 1, 's', cmd.potDir, sizeof(cmd.potDir), "potential directory"); - addArg("potName", 'p', 1, 's', cmd.potName, sizeof(cmd.potName), "potential name"); - addArg("potType", 't', 1, 's', cmd.potType, sizeof(cmd.potType), "potential type (funcfl or setfl)"); - addArg("doeam", 'e', 0, 'i', &(cmd.doeam), 0, "compute eam potentials"); - addArg("nx", 'x', 1, 'i', &(cmd.nx), 0, "number of unit cells in x"); - addArg("ny", 'y', 1, 'i', &(cmd.ny), 0, "number of unit cells in y"); - addArg("nz", 'z', 1, 'i', &(cmd.nz), 0, "number of unit cells in z"); - addArg("xproc", 'i', 1, 'i', &(cmd.xproc), 0, "processors in x direction"); - addArg("yproc", 'j', 1, 'i', &(cmd.yproc), 0, "processors in y direction"); - addArg("zproc", 'k', 1, 'i', &(cmd.zproc), 0, "processors in z direction"); - addArg("nSteps", 'N', 1, 'i', &(cmd.nSteps), 0, "number of time steps"); - addArg("printRate", 'n', 1, 'i', &(cmd.printRate), 0, "number of steps between output"); - addArg("dt", 'D', 1, 'd', &(cmd.dt), 0, "time step (in fs)"); - addArg("lat", 'l', 1, 'd', &(cmd.lat), 0, "lattice parameter (Angstroms)"); - addArg("temp", 'T', 1, 'd', &(cmd.temperature), 0, "initial temperature (K)"); - addArg("delta", 'r', 1, 'd', &(cmd.initialDelta), 0, "initial delta (Angstroms)"); - - processArgs(argc,argv); - - // If user didn't set potName, set type dependent default. - if (strlen(cmd.potName) == 0) - { - if (strcmp(cmd.potType, "setfl" ) == 0) - strcpy(cmd.potName, "Cu01.eam.alloy"); - if (strcmp(cmd.potType, "funcfl") == 0) - strcpy(cmd.potName, "Cu_u6.eam"); - } - - if (help) - { - printArgs(); - freeArgs(); - exit(2); - } - freeArgs(); - - return cmd; -} - -void printCmdYaml(FILE* file, Command* cmd) -{ - if (! printRank()) - return; - fprintf(file, - "Command Line Parameters:\n" - " doeam: %d\n" - " potDir: %s\n" - " potName: %s\n" - " potType: %s\n" - " nx: %d\n" - " ny: %d\n" - " nz: %d\n" - " xproc: %d\n" - " yproc: %d\n" - " zproc: %d\n" - " Lattice constant: %g Angstroms\n" - " nSteps: %d\n" - " printRate: %d\n" - " Time step: %g fs\n" - " Initial Temperature: %g K\n" - " Initial Delta: %g Angstroms\n" - "\n", - cmd->doeam, - cmd->potDir, - cmd->potName, - cmd->potType, - cmd->nx, cmd->ny, cmd->nz, - cmd->xproc, cmd->yproc, cmd->zproc, - cmd->lat, - cmd->nSteps, - cmd->printRate, - cmd->dt, - cmd->temperature, - cmd->initialDelta - ); - fflush(file); -} - |