-
-/*
- * write_sp_info(): Write SP specific info to config file
- */
-
-void write_sp_info(FILE *fp, int nprocs, char class)
-{
- int maxcells, problem_size, niter;
- char *dt;
- maxcells = isqrt(nprocs);
- if (class == 'S') { problem_size = 12; dt = "0.015d0"; niter = 100; }
- else if (class == 'W') { problem_size = 36; dt = "0.0015d0"; niter = 400; }
- else if (class == 'A') { problem_size = 64; dt = "0.0015d0"; niter = 400; }
- else if (class == 'B') { problem_size = 102; dt = "0.001d0"; niter = 400; }
- else if (class == 'C') { problem_size = 162; dt = "0.00067d0"; niter = 400; }
- else if (class == 'D') { problem_size = 408; dt = "0.00030d0"; niter = 500; }
- else if (class == 'E') { problem_size = 1020; dt = "0.0001d0"; niter = 500; }
- else {
- printf("setparams: Internal error: invalid class %c\n", class);
- exit(1);
- }
- fprintf(fp, "%sinteger maxcells, problem_size, niter_default\n", FINDENT);
- fprintf(fp, "%sparameter (maxcells=%d, problem_size=%d, niter_default=%d)\n",
- FINDENT, maxcells, problem_size, niter);
- fprintf(fp, "%sdouble precision dt_default\n", FINDENT);
- fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt);
-}
-
-/*
- * write_bt_info(): Write BT specific info to config file
- */
-
-void write_bt_info(FILE *fp, int nprocs, char class, int io)
-{
- int maxcells, problem_size, niter, wr_interval;
- char *dt;
- maxcells = isqrt(nprocs);
- if (class == 'S') { problem_size = 12; dt = "0.010d0"; niter = 60; }
- else if (class == 'W') { problem_size = 24; dt = "0.0008d0"; niter = 200; }
- else if (class == 'A') { problem_size = 64; dt = "0.0008d0"; niter = 200; }
- else if (class == 'B') { problem_size = 102; dt = "0.0003d0"; niter = 200; }
- else if (class == 'C') { problem_size = 162; dt = "0.0001d0"; niter = 200; }
- else if (class == 'D') { problem_size = 408; dt = "0.00002d0"; niter = 250; }
- else if (class == 'E') { problem_size = 1020; dt = "0.4d-5"; niter = 250; }
- else {
- printf("setparams: Internal error: invalid class %c\n", class);
- exit(1);
- }
- wr_interval = 5;
- fprintf(fp, "%sinteger maxcells, problem_size, niter_default\n", FINDENT);
- fprintf(fp, "%sparameter (maxcells=%d, problem_size=%d, niter_default=%d)\n",
- FINDENT, maxcells, problem_size, niter);
- fprintf(fp, "%sdouble precision dt_default\n", FINDENT);
- fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt);
- fprintf(fp, "%sinteger wr_default\n", FINDENT);
- fprintf(fp, "%sparameter (wr_default = %d)\n", FINDENT, wr_interval);
- fprintf(fp, "%sinteger iotype\n", FINDENT);
- fprintf(fp, "%sparameter (iotype = %d)\n", FINDENT, io);
- if (io) {
- fprintf(fp, "%scharacter*(*) filenm\n", FINDENT);
- switch (io) {
- case FULL:
- fprintf(fp, "%sparameter (filenm = 'btio.full.out')\n", FINDENT);
- break;
- case SIMPLE:
- fprintf(fp, "%sparameter (filenm = 'btio.simple.out')\n", FINDENT);
- break;
- case EPIO:
- fprintf(fp, "%sparameter (filenm = 'btio.epio.out')\n", FINDENT);
- break;
- case FORTRAN:
- fprintf(fp, "%sparameter (filenm = 'btio.fortran.out')\n", FINDENT);
- fprintf(fp, "%sinteger fortran_rec_sz\n", FINDENT);
- fprintf(fp, "%sparameter (fortran_rec_sz = %d)\n",
- FINDENT, fortran_rec_size);
- break;
- default:
- break;
- }
- }
-}
-
-
-
-/*
- * write_lu_info(): Write SP specific info to config file
- */
-
-void write_lu_info(FILE *fp, int nprocs, char class)
-{
- int isiz1, isiz2, itmax, inorm, problem_size;
- int xdiv, ydiv; /* number of cells in x and y direction */
- char *dt_default;
-
- if (class == 'S') { problem_size = 12; dt_default = "0.5d0"; itmax = 50; }
- else if (class == 'W') { problem_size = 33; dt_default = "1.5d-3"; itmax = 300; }
- else if (class == 'A') { problem_size = 64; dt_default = "2.0d0"; itmax = 250; }
- else if (class == 'B') { problem_size = 102; dt_default = "2.0d0"; itmax = 250; }
- else if (class == 'C') { problem_size = 162; dt_default = "2.0d0"; itmax = 250; }
- else if (class == 'D') { problem_size = 408; dt_default = "1.0d0"; itmax = 300; }
- else if (class == 'E') { problem_size = 1020; dt_default = "0.5d0"; itmax = 300; }
- else {
- printf("setparams: Internal error: invalid class %c\n", class);
- exit(1);
- }
- inorm = itmax;
- xdiv = ydiv = ilog2(nprocs)/2;
- if (xdiv+ydiv != ilog2(nprocs)) xdiv += 1;
- xdiv = ipow2(xdiv); ydiv = ipow2(ydiv);
- isiz1 = problem_size/xdiv; if (isiz1*xdiv < problem_size) isiz1++;
- isiz2 = problem_size/ydiv; if (isiz2*ydiv < problem_size) isiz2++;
-
-
- fprintf(fp, "\nc number of nodes for which this version is compiled\n");
- fprintf(fp, "%sinteger nnodes_compiled\n", FINDENT);
- fprintf(fp, "%sparameter (nnodes_compiled = %d)\n", FINDENT, nprocs);
-
- fprintf(fp, "\nc full problem size\n");
- fprintf(fp, "%sinteger isiz01, isiz02, isiz03\n", FINDENT);
- fprintf(fp, "%sparameter (isiz01=%d, isiz02=%d, isiz03=%d)\n",
- FINDENT, problem_size, problem_size, problem_size);
-
- fprintf(fp, "\nc sub-domain array size\n");
- fprintf(fp, "%sinteger isiz1, isiz2, isiz3\n", FINDENT);
- fprintf(fp, "%sparameter (isiz1=%d, isiz2=%d, isiz3=isiz03)\n",
- FINDENT, isiz1, isiz2);
-
- fprintf(fp, "\nc number of iterations and how often to print the norm\n");
- fprintf(fp, "%sinteger itmax_default, inorm_default\n", FINDENT);
- fprintf(fp, "%sparameter (itmax_default=%d, inorm_default=%d)\n",
- FINDENT, itmax, inorm);
-
- fprintf(fp, "%sdouble precision dt_default\n", FINDENT);
- fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt_default);
-
-}
-
-/*
- * write_mg_info(): Write MG specific info to config file
- */
-
-void write_mg_info(FILE *fp, int nprocs, char class)
-{
- int problem_size, nit, log2_size, log2_nprocs, lt_default, lm;
- int ndim1, ndim2, ndim3;
- if (class == 'S') { problem_size = 32; nit = 4; }
- else if (class == 'W') { problem_size = 128; nit = 4; }
- else if (class == 'A') { problem_size = 256; nit = 4; }
- else if (class == 'B') { problem_size = 256; nit = 20; }
- else if (class == 'C') { problem_size = 512; nit = 20; }
- else if (class == 'D') { problem_size = 1024; nit = 50; }
- else if (class == 'E') { problem_size = 2048; nit = 50; }
- else {
- printf("setparams: Internal error: invalid class type %c\n", class);
- exit(1);
- }
- log2_size = ilog2(problem_size);
- log2_nprocs = ilog2(nprocs);
- /* lt is log of largest total dimension */
- lt_default = log2_size;
- /* log of log of maximum dimension on a node */
- lm = log2_size - log2_nprocs/3;
- ndim1 = lm;
- ndim3 = log2_size - (log2_nprocs+2)/3;
- ndim2 = log2_size - (log2_nprocs+1)/3;
-
- fprintf(fp, "%sinteger nprocs_compiled\n", FINDENT);
- fprintf(fp, "%sparameter (nprocs_compiled = %d)\n", FINDENT, nprocs);
- fprintf(fp, "%sinteger nx_default, ny_default, nz_default\n", FINDENT);
- fprintf(fp, "%sparameter (nx_default=%d, ny_default=%d, nz_default=%d)\n",
- FINDENT, problem_size, problem_size, problem_size);
- fprintf(fp, "%sinteger nit_default, lm, lt_default\n", FINDENT);
- fprintf(fp, "%sparameter (nit_default=%d, lm = %d, lt_default=%d)\n",
- FINDENT, nit, lm, lt_default);
- fprintf(fp, "%sinteger debug_default\n", FINDENT);
- fprintf(fp, "%sparameter (debug_default=%d)\n", FINDENT, 0);
- fprintf(fp, "%sinteger ndim1, ndim2, ndim3\n", FINDENT);
- fprintf(fp, "%sparameter (ndim1 = %d, ndim2 = %d, ndim3 = %d)\n",
- FINDENT, ndim1, ndim2, ndim3);
-}
-
-
-/*
- * write_dt_info(): Write DT specific info to config file
- */