/ / /
| 208 | /***************************************************************/ |
| 209 | /***************************************************************/ |
| 210 | int main(int argc, char *argv[]) { |
| 211 | initialize mpi(argc, argv); |
| 212 | |
| 213 | /*--------------------------------------------------------------*/ |
| 214 | /*- set default geometric parameters ---------------------------*/ |
| 215 | /*--------------------------------------------------------------*/ |
| 216 | // size of computational cell |
| 217 | double sx = 10.0; |
| 218 | double sy = 5.0; |
| 219 | double sz = 0.0; |
| 220 | |
| 221 | // corners of array volume |
| 222 | double vxmin = -2.5, vxmax = -2.5; |
| 223 | double vymin = -1.0, vymax = +3.0; |
| 224 | double vzmin = 0.0, vzmax = 0.0; |
| 225 | |
| 226 | double res = 10.0; |
| 227 | |
| 228 | // double-valued command-line parameters |
| 229 | vector<const char *> parm_name; |
| 230 | vector<double *> parm_adrs; |
| 231 | parm_name.push_back("--sx"); |
| 232 | parm_adrs.push_back(&sx); |
| 233 | parm_name.push_back("--sy"); |
| 234 | parm_adrs.push_back(&sy); |
| 235 | parm_name.push_back("--sz"); |
| 236 | parm_adrs.push_back(&sz); |
| 237 | parm_name.push_back("--vxmin"); |
| 238 | parm_adrs.push_back(&vxmin); |
| 239 | parm_name.push_back("--vymin"); |
| 240 | parm_adrs.push_back(&vymin); |
| 241 | parm_name.push_back("--vzmin"); |
| 242 | parm_adrs.push_back(&vzmin); |
| 243 | parm_name.push_back("--vxmax"); |
| 244 | parm_adrs.push_back(&vxmax); |
| 245 | parm_name.push_back("--vymax"); |
| 246 | parm_adrs.push_back(&vymax); |
| 247 | parm_name.push_back("--vzmax"); |
| 248 | parm_adrs.push_back(&vzmax); |
| 249 | parm_name.push_back("--res"); |
| 250 | parm_adrs.push_back(&res); |
| 251 | |
| 252 | /*--------------------------------------------------------------*/ |
| 253 | /*- parse arguments --------------------------------------------*/ |
| 254 | /*--------------------------------------------------------------*/ |
| 255 | for (int narg = 1; narg < argc; narg++) { |
| 256 | // process double-valued parameters |
| 257 | size_t np; |
| 258 | for (np = 0; np < parm_name.size(); np++) |
| 259 | if (!strcasecmp(argv[narg], parm_name[np])) break; |
| 260 | if (np == parm_name.size()) meep::abort("unknown command-line option %s", argv[narg]); |
| 261 | if (narg + 1 == argc) meep::abort("no option specified for %s", argv[narg]); |
| 262 | if (1 != sscanf(argv[narg + 1], "%le", parm_adrs[np])) |
| 263 | meep::abort("invalid value %s specified for %s", argv[narg + 1], argv[narg]); |
| 264 | printf("Setting %s=%e.\n", argv[narg], *(parm_adrs[np])); |
| 265 | narg++; |
| 266 | } |
| 267 |
nothing calls this directly
no test coverage detected