/***************************************************************************** * * MODULE: Grass PDE Numerical Library * AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006 * soerengebbert gmx de * * PURPOSE: standard parser option for the numerical pde library * * COPYRIGHT: (C) 2000 by the GRASS Development Team * * This program is free software under the GNU General Public * License (>=v2). Read the file COPYING that comes with GRASS * for details. * *****************************************************************************/ #include #include #include #include #include /*! * \brief Create standardised Option structure related to the gpde library. * * This function will create a standardised Option structure * defined by parameter opt. A list of valid parameters can be found in N_pde.h. * It allocates memory for the Option structure and returns a pointer to * this memory (of type struct Option *).
* * If an invalid parameter was specified an empty Option structure will * be returned (not NULL). * * This function is related to the gpde library, general standard options can be * found in lib/gis/parser.c. These options are set with G_define_standard_option (); * * \param[in] opt Type of Option struct to create * \return Option * Pointer to an Option struct * * */ struct Option *N_define_standard_option(int opt) { struct Option *Opt; Opt = G_define_option(); switch (opt) { /*solver for symmetric, positive definite linear equation systems */ case N_OPT_SOLVER_SYMM: Opt->key = "solver"; Opt->type = TYPE_STRING; Opt->required = NO; Opt->key_desc = "name"; Opt->answer = "cg"; Opt->options = "gauss,lu,cholesky,jacobi,sor,cg,bicgstab,pcg"; Opt->guisection = "Solver"; Opt->description = ("The type of solver which should solve the symmetric linear equation system"); break; /*solver for unsymmetric linear equation systems */ case N_OPT_SOLVER_UNSYMM: Opt->key = "solver"; Opt->type = TYPE_STRING; Opt->required = NO; Opt->key_desc = "name"; Opt->answer = "bicgstab"; Opt->options = "gauss,lu,jacobi,sor,bicgstab"; Opt->guisection = "Solver"; Opt->description = ("The type of solver which should solve the linear equation system"); break; case N_OPT_MAX_ITERATIONS: Opt->key = "maxit"; Opt->type = TYPE_INTEGER; Opt->required = NO; Opt->answer = "10000"; Opt->guisection = "Solver"; Opt->description = ("Maximum number of iteration used to solve the linear equation system"); break; case N_OPT_ITERATION_ERROR: Opt->key = "error"; Opt->type = TYPE_DOUBLE; Opt->required = NO; Opt->answer = "0.000001"; Opt->guisection = "Solver"; Opt->description = ("Error break criteria for iterative solver"); break; case N_OPT_SOR_VALUE: Opt->key = "relax"; Opt->type = TYPE_DOUBLE; Opt->required = NO; Opt->answer = "1"; Opt->guisection = "Solver"; Opt->description = ("The relaxation parameter used by the jacobi and sor solver for speedup or stabilizing"); break; case N_OPT_CALC_TIME: Opt->key = "dtime"; Opt->type = TYPE_DOUBLE; Opt->required = YES; Opt->answer = "86400"; Opt->guisection = "Solver"; Opt->description = _("The calculation time in seconds"); break; } return Opt; }