1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
// GetDP - Copyright (C) 1997-2018 P. Dular and C. Geuzaine, University of Liege
//
// See the LICENSE.txt file for license information. Please report all
// issues on https://gitlab.onelab.info/getdp/getdp/issues
#ifndef _MESSAGE_H_
#define _MESSAGE_H_
#include <map>
#include <string>
#include <vector>
#include <stdarg.h>
class GmshClient;
struct Constant;
struct Expression;
struct Group;
namespace onelab{ class client; }
// a class to manage messages
class Message {
private:
// current cpu number and total number of cpus
static int _commRank, _commSize, _isCommWorld;
// error count
static int _warningCount, _errorCount;
// last PETSc error code
static int _lastPETScError;
// should we exit on error?
static bool _exitOnError, _operatingInTimeLoopAdaptive;
// verbosity level (0: silent except fatal errors, 1: +errors, 2: +warnings,
// 3: +direct+important info, 4: +info+progress, 5 (=normal): +cpu, 6:
// +matinfo, 10: elementary matrices, 99: debug)
static int _verbosity;
// step (in %) of the progress meter and current progress %
static int _progressMeterStep, _progressMeterCurrent;
// report cpu time for each info message?
static bool _infoCpu;
// starting time (gettimeofday at startup)
static double _startTime;
// timers
static std::map<std::string, double> _timers;
// communication with Gmsh
static GmshClient *_client;
// communication with onelab server
static onelab::client *_onelabClient;
public:
Message() {}
static void Initialize(int argc, char **argv);
static void Finalize();
static void Exit(int level);
static int GetCommRank(){ return _commRank; }
static int GetCommSize(){ return _commSize; }
static void SetCommRank(int val){ _commRank = val; }
static void SetCommSize(int val){ _commSize = val; }
static void Barrier();
static int GetIsCommWorld(){return _isCommWorld; }
static void SetIsCommWorld(int val){ _isCommWorld = val; }
static int GetNumThreads();
static void SetNumThreads(int num);
static int GetMaxThreads();
static int GetThreadNum();
static void SetVerbosity(int val){ _verbosity = val; }
static int GetVerbosity(){ return _verbosity; }
static void Fatal(const char *fmt, ...);
static void Error(const char *fmt, ...);
static void ResetErrorCounter(){ _errorCount = 0; }
static int GetErrorCount(){ return _errorCount; }
static void SetExitOnError(bool val){ _exitOnError = val; }
static void SetOperatingInTimeLoopAdaptive(bool val){ _operatingInTimeLoopAdaptive = val; }
static bool GetOperatingInTimeLoopAdaptive(){ return _operatingInTimeLoopAdaptive; }
static void Warning(const char *fmt, ...);
static void Info(const char *fmt, ...);
static void Info(int level, const char *fmt, ...);
static void Direct(const char *fmt, ...);
static void Direct(int level, const char *fmt, ...);
static void Check(const char *fmt, ...);
static void Debug(const char *fmt, ...);
static double GetWallClockTime();
static void Cpu(const char *fmt, ...);
static void Cpu(int level, bool printDate, bool printWallTime, bool printCpu,
bool printMem, bool printTraffic, const char *fmt, ...);
static void ProgressMeter(int n, int N, const char *fmt, ...);
static void ProgressMeter(int n, int N){ ProgressMeter(n, N, ""); }
static void SetProgressMeterStep(int step){ _progressMeterStep = step; }
static int GetProgressMeterStep(){ return _progressMeterStep; }
static void ResetProgressMeter(){ if(!_commRank) _progressMeterCurrent = 0; }
static void SetInfoCpu(bool val){ _infoCpu = val; }
static void PrintErrorCounter(const char *title);
static void SetLastPETScError(int ierr){ _lastPETScError = ierr; }
static int GetLastPETScError(){ return _lastPETScError; }
static double &Timer(std::string str){ return _timers[str]; }
static void PrintTimers();
static void InitializeSocket(std::string sockname);
static void FinalizeSocket();
static bool UseSocket(){ return _client ? true : false; }
static void SendMergeFileRequest(const std::string &filename);
static void SendOptionOnSocket(int num, std::string option);
static void TestSocket();
static void InitializeOnelab(std::string name, std::string sockname);
static void FinalizeOnelab();
static bool UseOnelab(){ return _onelabClient ? true : false; }
static std::string GetOnelabClientName();
static void SetOnelabNumber(std::string name, double val, bool visible=true);
static void SetOnelabString(std::string name, std::string val, bool visible=true);
static double GetOnelabNumber(std::string name, double defaultValue=0.,
bool errorIfMissing=false);
static std::string GetOnelabString(std::string name, const std::string &defaultValue="",
bool errorIfMissing=false);
static void GetOnelabNumbers(std::string name, std::vector<double> &value,
bool errorIfMissing);
static std::string GetOnelabAction();
static void AddOnelabNumberChoice(std::string name, const std::vector<double> &value,
const char *color=0, const char *units=0,
const char *label=0, bool visible=true,
bool closed=false);
static void AddOnelabStringChoice(std::string name, std::string kind,
std::string value, bool updateValue=true,
bool readOnly=false);
typedef std::map<std::string, std::vector<double> > fmap;
typedef std::map<std::string, std::vector<std::string> > cmap;
static void ExchangeOnelabParameter(Constant *c, fmap &fopt, cmap &copt);
static void UndefineOnelabParameter(const std::string &name);
};
#endif
|