1 /* Ergo, version 3.8, a program for linear scaling electronic structure 2 * calculations. 3 * Copyright (C) 2019 Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, 4 * and Anastasia Kruchinina. 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * 19 * Primary academic reference: 20 * Ergo: An open-source program for linear-scaling electronic structure 21 * calculations, 22 * Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, and Anastasia 23 * Kruchinina, 24 * SoftwareX 7, 107 (2018), 25 * <http://dx.doi.org/10.1016/j.softx.2018.03.005> 26 * 27 * For further information about Ergo, see <http://www.ergoscf.org>. 28 */ 29 30 /** @file output.h 31 32 @brief Functionality for writing output messages to a text file. 33 34 @author: Elias Rudberg <em>responsible</em> 35 */ 36 37 #ifndef OUTPUT_HEADER 38 #define OUTPUT_HEADER 39 40 41 #include <stdarg.h> 42 43 44 45 /* Log categories */ 46 #define LOG_CAT_UNDEFINED 0 47 #define LOG_CAT_ERROR 1 48 #define LOG_CAT_WARNING 2 49 #define LOG_CAT_INFO 3 50 #define LOG_CAT_EXTRAINFO 4 51 #define LOG_CAT_RESULTS 5 52 #define LOG_CAT_TIMINGS 6 53 #define LOG_CAT_MEMUSAGE 7 54 55 /* Log areas */ 56 #define LOG_AREA_UNDEFINED 0 57 #define LOG_AREA_MAIN 1 58 #define LOG_AREA_SCF 2 59 #define LOG_AREA_LR 3 60 #define LOG_AREA_INTEGRALS 4 61 #define LOG_AREA_DENSFROMF 5 62 #define LOG_AREA_DFT 6 63 #define LOG_AREA_LOWLEVEL 7 64 #define LOG_AREA_CI 8 65 #define LOG_AREA_ED 9 66 #define LOG_AREA_GS 10 67 68 /* output functions */ 69 void do_output(int logCategory, int logArea, const char* format, ...); 70 int do_voutput(int logCategory, int logArea, const char* format, va_list v); 71 int do_voutput_printf(int logCategory, int logArea, const char* format, va_list a); 72 void do_output_time(int logCategory, int logArea, const char* s); 73 void output_current_memory_usage(int logArea, const char* contextString); 74 void enable_memory_usage_output(void); 75 void enable_output(); 76 void enable_printf_output(); 77 78 79 #endif 80