asc26 amss-ncku initialized

This commit is contained in:
2026-01-13 15:01:15 +08:00
commit f2fc9af70e
272 changed files with 262274 additions and 0 deletions

173
AMSS_NCKU_source/monitor.C Normal file
View File

@@ -0,0 +1,173 @@
#ifdef newc
#include <cstdio>
using namespace std;
#else
#include <stdio.h>
#endif
#include "unistd.h"
#include "monitor.h"
#include "parameters.h"
#include "misc.h"
monitor::monitor(const char fname[], int myrank, string head)
{
I_Print = (myrank == 0);
if (I_Print)
{
map<string, string>::iterator iter;
iter = parameters::str_par.find("output dir");
if (iter != parameters::str_par.end())
{
out_dir = iter->second;
}
else
{
// read parameter from file
const int LEN = 256;
char pline[LEN];
string str, sgrp, skey, sval;
int sind;
char pname[50];
{
map<string, string>::iterator iter = parameters::str_par.find("inputpar");
if (iter != parameters::str_par.end())
{
strcpy(pname, (iter->second).c_str());
}
else
{
cout << "Error inputpar" << endl;
exit(0);
}
}
ifstream inf(pname, ifstream::in);
if (!inf.good())
{
cout << "Can not open parameter file " << pname << endl;
MPI_Abort(MPI_COMM_WORLD, 1);
}
for (int i = 1; inf.good(); i++)
{
inf.getline(pline, LEN);
str = pline;
int status = misc::parse_parts(str, sgrp, skey, sval, sind);
if (status == -1)
{
cout << "error reading parameter file " << pname << " in line " << i << endl;
MPI_Abort(MPI_COMM_WORLD, 1);
}
else if (status == 0)
continue;
if (sgrp == "ABE")
{
if (skey == "output dir")
out_dir = sval;
}
}
inf.close();
parameters::str_par.insert(map<string, string>::value_type("output dir", out_dir));
}
// considering checkpoint run
char filename[50];
sprintf(filename, "%s/%s", out_dir.c_str(), fname);
int i = 1;
while ((access(filename, F_OK)) != -1)
{
sprintf(filename, "%s/%d_%s", out_dir.c_str(), i, fname);
i++;
}
outfile.open(filename, ios::trunc);
time_t tnow;
time(&tnow);
struct tm *loc_time;
loc_time = localtime(&tnow);
outfile << "# File created on " << asctime(loc_time);
outfile << "#" << endl;
outfile.setf(ios::left);
outfile << head << endl;
}
}
monitor::monitor(const char fname[], int myrank, const int out_rank, string head)
{
I_Print = (myrank == out_rank);
if (I_Print)
{
// considering checkpoint run
char filename[50];
sprintf(filename, "%s/%s", out_dir.c_str(), fname);
int i = 1;
while ((access(filename, F_OK)) != -1)
{
sprintf(filename, "%s/%d_%s", out_dir.c_str(), i, fname);
i++;
}
outfile.open(filename, ios::trunc);
time_t tnow;
time(&tnow);
struct tm *loc_time;
loc_time = localtime(&tnow);
outfile << "# File created on " << asctime(loc_time);
outfile << "#" << endl;
outfile.setf(ios::left);
outfile << head << endl;
}
}
monitor::~monitor()
{
if (I_Print)
outfile.close();
}
void monitor::writefile(double time, int NN, double *DDAT)
{
if (I_Print)
{
outfile << setprecision(8);
outfile << setw(14) << time;
for (int countlm = 0; countlm < NN; countlm++)
{
outfile << " " << setw(15) << DDAT[countlm];
}
outfile << endl;
flush(outfile);
}
}
void monitor::writefile(double time, int NN, double *DDAT1, double *DDAT2)
{
if (I_Print)
{
outfile << setprecision(8);
outfile << setw(14) << time;
for (int countlm = 0; countlm < NN; countlm++)
{
outfile << " " << setw(15) << DDAT1[countlm]
<< " " << setw(15) << DDAT2[countlm];
}
outfile << endl;
flush(outfile);
}
}
void monitor::print_message(string head)
{
if (I_Print)
{
outfile << head << endl;
flush(outfile);
}
}