packages feed

dph-examples-0.6.0.1: examples/real/NBody/Batch/MainArgs.hs

module Batch.MainArgs
	( MainArg(..)
	, mainArgs)
where
import System.Console.ParseArgs

data MainArg
	= ArgHelp
	| ArgSolver
	| ArgMaxSteps
	| ArgTimeStep
	| ArgBodyCount
	| ArgBodyMass
	| ArgEpsilon
	| ArgDiscSize
	| ArgStartSpeed
	| ArgDumpFinal
	| ArgPrintFinal
	| ArgPrintTimings
	deriving (Eq, Ord, Show)
	
mainArgs :: [Arg MainArg]
mainArgs
 = 	[ Arg	{ argIndex	= ArgHelp
		, argAbbr	= Just 'h'
		, argName	= Just "help"
		, argData	= Nothing
		, argDesc	= "Print this usage help." }

	-- Solver selection.
	, Arg	{ argIndex	= ArgSolver
		, argAbbr	= Just 's'
		, argName	= Just "solver"
		, argData	= argDataDefaulted "name" ArgtypeString "vector-bh"
		, argDesc	= "One of: list-bh, vector-naive, vector-bh, nested-bh. (default vector-bh)" }

	-- Simulation setup.
	, Arg	{ argIndex	= ArgTimeStep
		, argAbbr	= Just 't'
		, argName	= Just "timestep"
		, argData	= argDataDefaulted "Double" ArgtypeDouble 1
		, argDesc	= "Time step between states (default 1)" }

	, Arg	{ argIndex	= ArgBodyCount
		, argAbbr	= Just 'b'
		, argName	= Just "bodies"
		, argData	= argDataDefaulted "Int" ArgtypeInt 200 
		, argDesc	= "Number of bodies in simulation (default 200)" }

	, Arg	{ argIndex	= ArgBodyMass
		, argAbbr	= Just 'm'
		, argName	= Just "mass"
		, argData	= argDataDefaulted "Double" ArgtypeDouble 10
		, argDesc	= "Mass of each body (default 10)" }

	, Arg	{ argIndex	= ArgEpsilon
		, argAbbr	= Just 'e'
		, argName	= Just "epsilon"
		, argData	= argDataDefaulted "Double" ArgtypeDouble 100
		, argDesc	= "Smoothing parameter (default 100)" }
		
	, Arg	{ argIndex	= ArgDiscSize
		, argAbbr	= Just 'd'
		, argName	= Just "disc"
		, argData	= argDataDefaulted "Double" ArgtypeDouble 50
		, argDesc	= "Starting size of disc containing bodies (default 50)" }

	, Arg	{ argIndex	= ArgStartSpeed
		, argAbbr	= Just 'p'
		, argName	= Just "speed"
		, argData	= argDataDefaulted "Double" ArgtypeDouble 0.5
		, argDesc	= "Starting rotation speed of bodies (default 0.5)" }

	, Arg	{ argIndex	= ArgMaxSteps
		, argAbbr	= Nothing
		, argName	= Just "max-steps"
		, argData	= argDataDefaulted "steps" ArgtypeInt 1000
		, argDesc	= "Exit simulation after this many steps (default 1000)" }

	, Arg	{ argIndex	= ArgDumpFinal
		, argAbbr	= Nothing
		, argName	= Just "dump-final"
		, argData	= argDataOptional "FilePath" ArgtypeString
		, argDesc	= "Dump final body positions and masses to file" }

	, Arg	{ argIndex	= ArgPrintFinal
		, argAbbr	= Nothing
		, argName	= Just "print-final"
		, argData	= Nothing
		, argDesc	= "Print final body positions and masses to stdout" }

	, Arg	{ argIndex	= ArgPrintTimings
		, argAbbr	= Nothing
		, argName	= Just "print-timings"
		, argData	= Nothing
		, argDesc	= "Print timings of the solver" }

	]